diff --git a/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java b/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java index 48115bc1..4662535f 100644 --- a/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java +++ b/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java @@ -10,16 +10,21 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; + + /** * 方法调用统一切面处理 */ @Aspect @Component @Slf4j +@Profile({"dev"}) public class AppApiMethodAspect { @Pointcut("!execution(public * (com.sqx.modules.sys.controller.SysLoginController).*(..)) " + diff --git a/src/main/java/com/sqx/modules/app/controller/UserController.java b/src/main/java/com/sqx/modules/app/controller/UserController.java index b1def84d..00ccf736 100644 --- a/src/main/java/com/sqx/modules/app/controller/UserController.java +++ b/src/main/java/com/sqx/modules/app/controller/UserController.java @@ -292,6 +292,7 @@ public class UserController { int dyCount = userService.queryUserCount(type, date, "抖音", qdCode); int giveMemberCount = userService.userMessage(date, type, qdCode, 1); int moneyMemberCount = userService.userMessage(date, type, qdCode, 2); +// int memberCount = userVipService.userMessage(date, type, qdCode, null); int memberCount = userService.userMessage(date, type, qdCode, null); int userCount = sumUserCount - memberCount; Map result = new HashMap<>(); diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppController.java b/src/main/java/com/sqx/modules/app/controller/app/AppController.java index b278e510..a0625515 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppController.java @@ -113,15 +113,15 @@ public class AppController { if (count > 0) { errMsg = "支付宝信息修改失败: 一个支付宝账号仅可绑定一个用户"; } - if (StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) { + if (errMsg == null && StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) { errMsg = "支付宝信息修改失败: 姓名与实名认证信息不相符"; } - if (!DataLimitUtil.isAccessAllowed(zhiFuBao+certName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) { + if (errMsg == null && !DataLimitUtil.isAccessAllowed(zhiFuBao+certName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) { errMsg = "支付宝信息修改失败: 相同支付宝账号每月可绑定次数已用完"; } - if (!ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) { + if (errMsg == null && !ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) { errMsg = "支付宝信息修改失败: 每月可修改次数已用完,请联系管理员"; } @@ -133,42 +133,48 @@ public class AppController { } + String authErrMsg = null; if (StrUtil.isNotBlank(certNum) && !certNum.equals(userInfo.getCertNo())) { if (StrUtil.isNotBlank(userEntity.getZhiFuBaoName()) && !certName.equals(userEntity.getZhiFuBaoName())) { - errMsg = "实名修改失败: 姓名与绑定支付宝信息不相符"; + authErrMsg = "实名修改失败: 姓名与绑定支付宝信息不相符"; } - if (!IdcardUtil.isValidCard(certNum)) { - errMsg = "实名修改失败: 身份证号码有误"; + if (authErrMsg == null && !IdcardUtil.isValidCard(certNum)) { + authErrMsg = "实名修改失败: 身份证号码有误"; } - Integer idCount = userInfoService.countCertCount(certName, certNum); - if (idCount > 1) { - errMsg = "实名修改失败: 此实名信息已存在"; + if (authErrMsg == null) { + Integer idCount = userInfoService.countCertCount(certName, certNum); + if (idCount > 1) { + authErrMsg = "实名修改失败: 此实名信息已存在"; + } } - if (!ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { - errMsg = "实名修改失败: 每月可修改次数已用完,请联系管理员"; + if (authErrMsg == null && !ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { + authErrMsg = "实名修改失败: 账号每月可修改次数已用完,请联系管理员"; } - try { - aliService.authCertNo(certName, certNum); - }catch (Exception e) { - ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo"); - errMsg = "实名修改失败: 身份证信息不匹配"; + if (authErrMsg == null && !ApiAccessLimitUtil.isAccessAllowed(certName, "updateAuthCertInfoByIdCard", 1, "month")) { + authErrMsg = "实名修改失败: 此身份证信息次月已绑定过,请联系管理员"; } - if (errMsg != null && errMsg.contains("实名修改失败")) { - return Result.error(errMsg); + if (authErrMsg == null) { + try { + aliService.authCertNo(certName, certNum); + userInfo.setCertName(certName); + userInfo.setCertNo(certNum); + userInfo.setUpdateTime(DateUtil.date()); + userInfoService.update(userInfo, new LambdaQueryWrapper().eq(UserInfo::getUserId, userId)); + }catch (Exception e) { + ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo"); + ApiAccessLimitUtil.removeKey(certName, "updateAuthCertInfoByIdCard"); + authErrMsg = "实名修改失败: 身份证信息不匹配"; + } } - - userInfo.setCertName(certName); - userInfo.setCertNo(certNum); - userInfo.setUpdateTime(DateUtil.date()); - userInfoService.update(userInfo, new LambdaQueryWrapper().eq(UserInfo::getUserId, userId)); } - if (errMsg != null) { - return Result.error(errMsg); + if (errMsg != null || authErrMsg != null) { + authErrMsg = authErrMsg == null ? "" : authErrMsg; + return Result.error(errMsg == null ? authErrMsg : errMsg + " " + authErrMsg); } return Result.success(); // 去除首绑支付宝奖励 diff --git a/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java b/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java index 427f343c..672f3d5f 100644 --- a/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java +++ b/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java @@ -4,16 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import java.io.Serializable; +import java.util.Date; + /** * * @TableName invite_achievement @@ -26,7 +25,7 @@ public class InviteAchievement implements Serializable { /** * */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long id; diff --git a/src/main/java/com/sqx/modules/app/entity/UserEntity.java b/src/main/java/com/sqx/modules/app/entity/UserEntity.java index e5ddbae7..c80cccbe 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserEntity.java +++ b/src/main/java/com/sqx/modules/app/entity/UserEntity.java @@ -30,7 +30,7 @@ public class UserEntity implements Serializable { */ @Excel(name = "用户id", orderNum = "1") @ApiModelProperty("用户id") - @TableId(value = "user_id") + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/app/entity/UserInfo.java b/src/main/java/com/sqx/modules/app/entity/UserInfo.java index 65f26d8a..89b13406 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserInfo.java +++ b/src/main/java/com/sqx/modules/app/entity/UserInfo.java @@ -1,10 +1,10 @@ package com.sqx.modules.app.entity; import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; import java.io.Serializable; import java.util.Date; -import lombok.Data; /** * @@ -16,7 +16,7 @@ public class UserInfo implements Serializable { /** * */ - @TableId + @TableId(type = IdType.ID_WORKER) private Long id; /** diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoney.java b/src/main/java/com/sqx/modules/app/entity/UserMoney.java index ca27673b..3acf2abb 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoney.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoney.java @@ -25,7 +25,7 @@ public class UserMoney implements Serializable { * 主键id */ @ApiModelProperty("主键id") - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long id; diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java b/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java index 2f911e7a..354fbf59 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java @@ -1,8 +1,7 @@ package com.sqx.modules.app.entity; import cn.hutool.core.date.DateUtil; -//import com.amazonaws.services.dynamodbv2.xspec.L; -//import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -12,7 +11,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; -//import lombok.NoArgsConstructor; import java.io.Serializable; import java.math.BigDecimal; @@ -26,7 +24,7 @@ public class UserMoneyDetails implements Serializable { * 钱包详情id */ @ApiModelProperty("钱包详情id") - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index 332bd8ae..7bff4a41 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -44,6 +44,7 @@ import com.sqx.common.utils.Result; import com.sqx.modules.app.dao.AuthCertNoDTO; import com.sqx.modules.app.dao.MsgDao; import com.sqx.modules.app.dao.UserDao; +import com.sqx.modules.app.dao.UserVipDao; import com.sqx.modules.app.entity.*; import com.sqx.modules.app.service.*; import com.sqx.modules.app.utils.JwtUtils; @@ -82,11 +83,9 @@ import weixin.popular.util.JsonUtil; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.stream.Collectors; /** * 用户 @@ -124,15 +123,17 @@ public class UserServiceImpl extends ServiceImpl implements private SysUserService sysUserService; private final AliService aliService; private final UserInfoService userInfoService; + private final UserVipDao userVipDao; @Value("${spring.profiles.active}") private String profiles; private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); - public UserServiceImpl(@Lazy AliService aliService, UserInfoService userInfoService) { + public UserServiceImpl(@Lazy AliService aliService, UserInfoService userInfoService, UserVipDao userVipDao) { this.aliService = aliService; this.userInfoService = userInfoService; + this.userVipDao = userVipDao; } @Override @@ -1419,7 +1420,34 @@ public class UserServiceImpl extends ServiceImpl implements @Override public int userMessage(String date, int type, String qdCode, Integer vipType) { - return baseMapper.userMessage(date, type, qdCode, vipType); + DateTime dateTime; + if (type == 0) { + dateTime = DateUtil.beginOfDay(DateUtil.parseDate(date)); + + }else if (type == 1) { + dateTime = DateUtil.beginOfMonth(DateUtil.parseDate(date)); + }else { + dateTime = DateUtil.beginOfYear(DateUtil.parseDate(date)); + } + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .ge(UserEntity::getCreateTime, dateTime); + if (StrUtil.isNotBlank(qdCode)) { + queryWrapper.eq(UserEntity::getQdCode, qdCode); + } + + Set useridList = baseMapper.selectList(queryWrapper.select(UserEntity::getUserId)) + .stream().map(UserEntity::getUserId).collect(Collectors.toSet()); + if (useridList.isEmpty()) { + return 0; + } + + LambdaQueryWrapper vipLambdaQueryWrapper = new LambdaQueryWrapper().in(UserVip::getUserId, useridList) + .eq(UserVip::getIsVip, 2); + if (vipType != null) { + vipLambdaQueryWrapper.eq(UserVip::getVipType, vipType); + } + return userVipDao.selectCount(vipLambdaQueryWrapper); } diff --git a/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java b/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java index 4f39ae65..844147ae 100644 --- a/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java +++ b/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java @@ -48,18 +48,10 @@ public class AppCourseController extends AbstractController { @Login @GetMapping("/courseSets") @ApiOperation("根据id查询短剧集数列表") - public Result courseSets(@RequestAttribute("userId") Long userId, Long courseId) { - return courseDetailsService.courseSets(userId, courseId); + public Result courseSets(@RequestAttribute("userId") Long userId, Long courseId, Integer sort) { + return courseDetailsService.courseSets(userId, courseId,sort); } - @Login - @GetMapping("/courseDetails") - @ApiOperation("查询短剧 内容") - public Result courseDetails(@RequestAttribute("userId") Long userId, Long courseId, Integer sort) { - return courseDetailsService.courseDetails(userId, courseId, sort); - } - - @Login @GetMapping("/selectCourseDetailsById") @ApiOperation("根据id查询短剧详情") diff --git a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java index 861a8741..4a7774ff 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java @@ -23,10 +23,7 @@ public interface CourseDetailsDao extends BaseMapper { * @param wholesalePrice 10集价格 */ @Cacheable(cacheNames = "courseSets" ,key = "#courseId") - List courseSets(@Param("courseId") Long courseId, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice); - - List courseDetails(@Param("courseId") Long courseId, @Param("collect") Long collect, - @Param("starSort") Integer starSort, @Param("endSort") Integer endSort); + List courseSets(@Param("courseId") Long courseId, @Param("collect") Long collect, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice); List findByCourseId(@Param("id") Long id, @Param("userId") Long userId); diff --git a/src/main/java/com/sqx/modules/course/entity/Course.java b/src/main/java/com/sqx/modules/course/entity/Course.java index b62bd296..a4415160 100644 --- a/src/main/java/com/sqx/modules/course/entity/Course.java +++ b/src/main/java/com/sqx/modules/course/entity/Course.java @@ -27,7 +27,7 @@ public class Course implements Serializable { /** * 短剧id */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long courseId; diff --git a/src/main/java/com/sqx/modules/course/entity/CourseCollect.java b/src/main/java/com/sqx/modules/course/entity/CourseCollect.java index 9c9935a7..e4837766 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseCollect.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseCollect.java @@ -5,8 +5,6 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.experimental.Accessors; -import org.apache.ibatis.annotations.Update; -import org.apache.ibatis.annotations.UpdateProvider; import java.io.Serializable; @@ -26,7 +24,7 @@ public class CourseCollect implements Serializable { /** * 收藏id */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long courseCollectId; diff --git a/src/main/java/com/sqx/modules/course/entity/CourseDetails.java b/src/main/java/com/sqx/modules/course/entity/CourseDetails.java index 661e09a9..21b3c789 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseDetails.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseDetails.java @@ -23,7 +23,7 @@ public class CourseDetails implements Serializable { /** * 短剧目录id */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long courseDetailsId; diff --git a/src/main/java/com/sqx/modules/course/entity/CourseUser.java b/src/main/java/com/sqx/modules/course/entity/CourseUser.java index 240f934f..8572a5fb 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseUser.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseUser.java @@ -22,7 +22,7 @@ public class CourseUser implements Serializable { /** * 我的短剧id */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long courseUserId; diff --git a/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java b/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java index 71a3534e..c69fbab4 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java @@ -20,9 +20,8 @@ public interface CourseDetailsService extends IService { * @param courseId * @return */ - Result courseSets(Long userId, Long courseId); + Result courseSets(Long userId, Long courseId, Integer sort); - Result courseDetails(Long userId, Long courseId, Integer sort); Result selectCourseDetailsById(Long id,String token,String courseDetailsId); diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java index da447a24..e8c686bf 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java @@ -34,7 +34,6 @@ import com.sqx.modules.course.entity.CourseUser; import com.sqx.modules.course.service.CourseDetailsService; import com.sqx.modules.course.vo.CourseDetailsIn; import com.sqx.modules.course.vo.CourseDetailsSetVo; -import com.sqx.modules.course.vo.CourseDetailsVo; import com.sqx.modules.orders.dao.OrdersDao; import com.sqx.modules.orders.service.OrdersService; import com.sqx.modules.redisService.impl.RedisServiceImpl; @@ -53,7 +52,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; +import java.util.concurrent.atomic.AtomicReference; @Service @Slf4j @@ -146,7 +145,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl().eq("course_id", courseId) - .eq("user_id", userId).eq("classify", 3).last("limit 1")); + public Result courseSets(Long userId, Long courseId, Integer sort) { + //观看记录 + CourseCollect courseCollect = courseCollectDao.selectOne(new QueryWrapper() + .eq("course_id", courseId).eq("user_id", userId) + .eq("classify", 3).last("limit 1")); + //是否追剧 + Integer collect = courseCollectDao.selectCount(new QueryWrapper() + .eq("user_id", userId).eq("course_id", courseId) + .eq("classify", 1).last("limit 1")); Course bean = courseDao.selectById(courseId); //查询用户是否购买了整集 CourseUser courseUser = courseUserDao.selectCourseUser(courseId, userId); // 每天购买超过上限,获得免费时间段资格 boolean freeWatch = checkFreeWatchPayCount(userId); - List courseDetailsSetVos; - if (freeWatch || courseUser != null) { - courseDetailsSetVos = baseMapper.courseSets(courseId, 2, null, null); - } else { -// courseDetailsSetVos = baseMapper.courseSets(courseId, 1, bean.getPrice(), bean.getWholesalePrice()); - courseDetailsSetVos = baseMapper.courseSets(courseId, 2, bean.getPrice(), bean.getWholesalePrice()); - //查询用户是否单独购买了集 - Set detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); - if (courseCollect != null) { - for (CourseDetailsSetVo s : courseDetailsSetVos) { - if (s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) { - s.setCurrent(1); - break; - } - } - } else { - courseDetailsSetVos.get(0).setCurrent(1); - } - if (CollectionUtil.isNotEmpty(detailsId)) { - courseDetailsSetVos = courseDetailsSetVos.stream() - .peek(s -> { - if (detailsId.contains(s.getCourseDetailsId())) { - s.setIsPrice(2); - } - }) - .collect(Collectors.toList()); - } - } - Map map = new HashMap<>(); - map.put("title", bean.getTitle()); - map.put("list", courseDetailsSetVos); - return new Result().put("data", map); - } - - @Override - public Result courseDetails(Long userId, Long courseId, Integer sort) { - Course bean = courseDao.selectById(courseId); - Integer detailCount = baseMapper.countCourseByCourseId(courseId); - if (detailCount == null || detailCount.equals(0)) { - return Result.error("暂无可看剧集,请观看其它影片。"); - } int startSort = 0; int endSort = 5; if (sort == null) { - CourseCollect courseCollect = courseCollectDao.selectOne(new QueryWrapper().eq("course_id", courseId) - .eq("user_id", userId).eq("classify", 3).last("limit 1")); if (courseCollect != null) { CourseDetails courseDetails = baseMapper.selectOne(new QueryWrapper() .eq("course_details_id", courseCollect.getCourseDetailsId()).eq("course_id", courseCollect.getCourseId()).last("limit 1")); sort = courseDetails.getSort(); } } + List courseDetailsSetVos; + if (freeWatch || courseUser != null) { + courseDetailsSetVos = baseMapper.courseSets(courseId, collect == null ? 0L : 1L, 2, null, null); + } else { + courseDetailsSetVos = baseMapper.courseSets(courseId, collect == null ? 0L : 1L, 1, bean.getPrice(), bean.getWholesalePrice()); + } if (sort != null && sort > 2) { startSort = sort - 3; endSort = sort + 3; - if (detailCount < endSort) { - startSort = detailCount - 5; - endSort = detailCount + 1; + if (courseDetailsSetVos.size() < endSort) { + startSort = courseDetailsSetVos.size() - 5; + endSort = courseDetailsSetVos.size() + 1; } } - //查询用户是否购买了整集 - CourseUser courseUser = courseUserDao.selectCourseUser(courseId, userId); - boolean freeWatch = true; - if (courseUser == null) { - // 每天购买超过上限,获得免费时间段资格 - freeWatch = checkFreeWatchPayCount(userId); - } - Integer collect = courseCollectDao.selectCount(new QueryWrapper() - .eq("user_id", userId).eq("course_id", courseId) - .eq("classify", 1).last("limit 1")); + //已购买剧集 Set detailsId = new HashSet<>(); - //全剧免费 if ((!freeWatch)) { detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); } - List courseDetailsVos = baseMapper.courseDetails(courseId, collect == null ? 0L : 1L, startSort, endSort); + AtomicReference current = new AtomicReference<>(new CourseDetailsSetVo()); Set finalDetailsId = detailsId; - courseDetailsVos.stream().forEach(s -> { + int finalStartSort = startSort; + int finalEndSort = endSort; + courseDetailsSetVos.parallelStream().forEach(s -> { + //当前 + if (courseCollect != null && s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) { + s.setCurrent(1); + current.set(s); + } // 不免费 3集以后 (已买的不为空 并不在已买的包含) -// if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { -// s.setVideoUrl(null); -// } - CourseCollect isGood = courseCollectDao.selectOne(new QueryWrapper() - .eq("user_id", userId).eq("course_details_id", s.getCourseDetailsId()).eq("classify", 2).last("limit 1")); - s.setIsGood(isGood == null ? 0 : 1); + if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { + s.setVideoUrl(null); + } + if (s.getSort() > finalStartSort && s.getSort() < finalEndSort) { + CourseCollect isGood = courseCollectDao.selectOne(new QueryWrapper() + .eq("user_id", userId).eq("course_details_id", s.getCourseDetailsId()).eq("classify", 2).last("limit 1")); + s.setIsGood(isGood == null ? 0 : 1); + } }); + if (courseCollect == null) { + courseDetailsSetVos.get(0).setCurrent(1); + current.set(courseDetailsSetVos.get(0)); + } ThreadUtil.execAsync(() -> { setCourseView(bean); }); - return new Result().put("data", courseDetailsVos); + Map map = new HashMap<>(); + map.put("current", current.get()); + map.put("title", bean.getTitle()); + map.put("list", courseDetailsSetVos); + return new Result().put("data", map); } @Override diff --git a/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java b/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java index bc2534c1..42f2bcbb 100644 --- a/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java +++ b/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java @@ -15,4 +15,25 @@ public class CourseDetailsSetVo { private BigDecimal wholesalePrice; private BigDecimal countPrice; private Integer sort; + + /** + * 封面图 + */ + private String titleImg; + /** + * 视频地址 + */ + private String videoUrl; + /** + * 点赞数 + */ + private Integer goodNum; + /** + * 是否已追 + */ + private Long isCollect; + /** + * 是否点赞 + */ + private Integer isGood; } diff --git a/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java b/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java index fcd94cda..09e76e24 100644 --- a/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java +++ b/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java @@ -1,8 +1,6 @@ package com.sqx.modules.discSpinning.entity; -import com.baomidou.mybatisplus.annotation.FieldStrategy; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -20,6 +18,7 @@ import java.math.BigDecimal; @TableName("disc_spinning_record") public class DiscSpinningRecord extends Model { //主键 + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long id; @JsonSerialize(using = ToStringSerializer.class) diff --git a/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java b/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java index df805e0e..40718230 100644 --- a/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java +++ b/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java @@ -1,5 +1,7 @@ package com.sqx.modules.invite.entity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @@ -18,6 +20,7 @@ public class InviteMoney implements Serializable { /** * 邀请收益钱包id */ + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long id; diff --git a/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java b/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java index 0881ba74..27277894 100644 --- a/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java +++ b/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java @@ -204,7 +204,7 @@ public class InviteServiceImpl extends ServiceImpl implements // 金币 int money = Integer.parseInt(commonInfoService.findOne(911).getValue()); if (money > 0 && userEntity.getUserId() != 1) { - userMoneyService.updateMoney(1, userEntity.getUserId(), money); +// userMoneyService.updateMoney(1, userEntity.getUserId(), money); UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setUserId(userEntity.getUserId()); userMoneyDetails.setType(1); @@ -220,8 +220,9 @@ public class InviteServiceImpl extends ServiceImpl implements // 更新邀请人钱包 UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userEntity.getUserId()); + userMoney.setMoney(userMoney.getMoney() == null ? BigDecimal.valueOf(money) : userMoney.getMoney().add(BigDecimal.valueOf(money))); userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin() == null ? new BigDecimal(money) : userMoney.getInviteIncomeCoin().add(new BigDecimal(money))); - userMoneyService.update(userMoney, new LambdaQueryWrapper().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId())); + userMoneyService.update(null, new LambdaQueryWrapper().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId())); } //助力活动 diff --git a/src/main/java/com/sqx/modules/orders/controller/OrdersController.java b/src/main/java/com/sqx/modules/orders/controller/OrdersController.java index 0eb417f9..500056d6 100644 --- a/src/main/java/com/sqx/modules/orders/controller/OrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/OrdersController.java @@ -134,10 +134,10 @@ public class OrdersController extends AbstractController { //日 Double dayMoney = ordersService.selectOrdersMoney(1, 1, 1, dateTime, courseId, sysUserId); Map result = new HashMap<>(); - result.put("sumMoney", sumMoney); - result.put("yearMoney", yearMoney); - result.put("monthMoney", monthMoney); - result.put("dayMoney", dayMoney); + result.put("sumMoney", sumMoney == null ? 0 : sumMoney); + result.put("yearMoney", yearMoney == null ? 0 : yearMoney); + result.put("monthMoney", monthMoney == null ? 0 : monthMoney); + result.put("dayMoney", dayMoney == null ? 0 : dayMoney); return Result.success().put("data", result); } @@ -151,12 +151,12 @@ public class OrdersController extends AbstractController { //渠道 Double qdMoney = ordersService.selectFenXiaoMoney(3, sysUserId, flag, time); //总分销 - Double sumMoney = ordersService.selectFenXiaoMoney(4, sysUserId, flag, time); +// Double sumMoney = ordersService.selectFenXiaoMoney(4, sysUserId, flag, time); Map result = new HashMap<>(); result.put("oneMoney", oneMoney); result.put("twoMoney", twoMoney); result.put("qdMoney", qdMoney); - result.put("sumMoney", sumMoney); + result.put("sumMoney", oneMoney + twoMoney + qdMoney); return Result.success().put("data", result); } diff --git a/src/main/java/com/sqx/modules/orders/entity/Orders.java b/src/main/java/com/sqx/modules/orders/entity/Orders.java index f3d8bcaa..5405caa0 100644 --- a/src/main/java/com/sqx/modules/orders/entity/Orders.java +++ b/src/main/java/com/sqx/modules/orders/entity/Orders.java @@ -23,7 +23,7 @@ public class Orders implements Serializable { /** * 订单id */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long ordersId; diff --git a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java index cb46b76e..db7df678 100644 --- a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java +++ b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java @@ -9,6 +9,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Set; /** * @author fang @@ -46,4 +47,6 @@ public interface CashOutDao extends BaseMapper { BigDecimal selectSumMoney(@Param("userId") Long userId, @Param("state") Integer state); List selectSumByUserIdList(ArrayList userIdList, Integer state); + + List countByUserIdList(Set userIdList); } diff --git a/src/main/java/com/sqx/modules/pay/entity/CashOut.java b/src/main/java/com/sqx/modules/pay/entity/CashOut.java index baba18a8..6356da23 100644 --- a/src/main/java/com/sqx/modules/pay/entity/CashOut.java +++ b/src/main/java/com/sqx/modules/pay/entity/CashOut.java @@ -25,7 +25,7 @@ public class CashOut implements Serializable { /** * 申请提现id */ - @TableId(type = IdType.INPUT) + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private long id; diff --git a/src/main/java/com/sqx/modules/pay/entity/PayDetails.java b/src/main/java/com/sqx/modules/pay/entity/PayDetails.java index 7773c9ef..e179af95 100644 --- a/src/main/java/com/sqx/modules/pay/entity/PayDetails.java +++ b/src/main/java/com/sqx/modules/pay/entity/PayDetails.java @@ -24,7 +24,7 @@ public class PayDetails implements Serializable { /** * 充值记录id */ - @TableId(type = IdType.INPUT) + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long id; diff --git a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java index e123e71a..46ab05c7 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java @@ -118,7 +118,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme } PageHelper.startPage(page, limit); - List cashOutList = list(queryWrapper); + List cashOutList = list(queryWrapper.orderByDesc(CashOut::getId)); if (!isApp) { ArrayList userIdList = new ArrayList<>(); @@ -594,7 +594,56 @@ public class CashOutServiceImpl extends ServiceImpl impleme public PageUtils auditPage(Map params) { PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); CashOut cashOut = BeanUtil.toBean(params, CashOut.class); - List page = baseMapper.selectCashOutPage(cashOut, false); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (cashOut.getUserId() != null) { + queryWrapper.eq(CashOut::getUserId, cashOut.getUserId()); + } + if (StrUtil.isNotBlank(cashOut.getUserName())) { + queryWrapper.like(CashOut::getUserName, cashOut.getUserName()); + } + if (StrUtil.isNotBlank(cashOut.getZhifubaoName())) { + queryWrapper.like(CashOut::getZhifubaoName, cashOut.getZhifubaoName()); + } + if (StrUtil.isNotBlank(cashOut.getZhifubao())) { + queryWrapper.like(CashOut::getZhifubao, cashOut.getZhifubao()); + } + if (cashOut.getUserType() != null) { + queryWrapper.eq(CashOut::getUserType, cashOut.getUserType()); + } + if (cashOut.getState() != null) { + queryWrapper.eq(CashOut::getState, cashOut.getState()); + } + + if (StrUtil.isNotBlank(cashOut.getStartTime()) && StrUtil.isNotBlank(cashOut.getEndTime())) { + queryWrapper.between(CashOut::getCreateAt, cashOut.getStartTime(), cashOut.getEndTime()); + }else if (StrUtil.isNotBlank(cashOut.getStartTime())) { + queryWrapper.ge(CashOut::getCreateAt, cashOut.getStartTime()); + }else if (StrUtil.isNotBlank(cashOut.getEndTime())) { + queryWrapper.le(CashOut::getCreateAt, cashOut.getEndTime()); + } + + List page; + if (queryWrapper.isEmptyOfWhere()) { + page = list(); + }else { + page = list(queryWrapper); + } + + if (!page.isEmpty()) { + Set userIdList = page.stream().map(CashOut::getUserId).collect(Collectors.toSet()); + Map countInfoMap = cashOutDao.countByUserIdList(userIdList).stream().collect(Collectors.toMap(CashOut::getUserId, item -> item)); + page.forEach(item -> { + CashOut countInfo = countInfoMap.get(item.getUserId()); + if (countInfo != null) { + item.setTotal(countInfo.getTotal()); + item.setCount(countInfo.getCount()); + item.setVerifyCount(countInfo.getVerifyCount()); + item.setVerifyTotal(countInfo.getVerifyTotal()); + } + }); + } + PageInfo pageInfo = new PageInfo<>(page); return PageUtils.page(pageInfo); } diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java index c7c36565..0a78ea88 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java @@ -1,9 +1,6 @@ package com.sqx.modules.sys.entity; -import com.baomidou.mybatisplus.annotation.FieldStrategy; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.common.validator.group.AddGroup; @@ -29,7 +26,7 @@ public class SysUserEntity implements Serializable { /** * 用户ID */ - @TableId + @TableId(type = IdType.ID_WORKER) @JsonSerialize(using = ToStringSerializer.class) private Long userId; diff --git a/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterRecord.java b/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterRecord.java index 53e44daa..2fd7b24f 100644 --- a/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterRecord.java +++ b/src/main/java/com/sqx/modules/taskCenter/entity/TaskCenterRecord.java @@ -1,5 +1,7 @@ package com.sqx.modules.taskCenter.entity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; @@ -16,6 +18,7 @@ import lombok.Data; @TableName("task_center_record") @ApiModel(value = "任务领取记录 实体类") public class TaskCenterRecord extends Model { + @TableId(type = IdType.ID_WORKER) @ApiModelProperty(value = "id",hidden = true) private Long id; @ApiModelProperty(value = "用户id",hidden = true) diff --git a/src/main/java/com/sqx/modules/userSign/entity/UserSignRecord.java b/src/main/java/com/sqx/modules/userSign/entity/UserSignRecord.java index bd832e93..f1f1b7f8 100644 --- a/src/main/java/com/sqx/modules/userSign/entity/UserSignRecord.java +++ b/src/main/java/com/sqx/modules/userSign/entity/UserSignRecord.java @@ -1,15 +1,15 @@ package com.sqx.modules.userSign.entity; -import java.util.Date; - -import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; - - import lombok.Data; +import java.util.Date; + /** * 用户签到表(UserSignRecord)表实体类 * @@ -20,6 +20,7 @@ import lombok.Data; @TableName("user_sign_record") @ApiModel(value = "用户签到表 实体类") public class UserSignRecord extends Model { + @TableId(type = IdType.ID_WORKER) @ApiModelProperty("id") private Long id; @ApiModelProperty("用户id") diff --git a/src/main/resources/application-pay.yml b/src/main/resources/application-pay.yml index 61b93ab2..a0f37526 100644 --- a/src/main/resources/application-pay.yml +++ b/src/main/resources/application-pay.yml @@ -22,7 +22,7 @@ spring: # sharding-jdbc 配置 shardingsphere: # 显示sharding-jdbc改写的sql语句 - show-sql: true + show-sql: false center-tables-data-node: duanju.%s # 区域表的数据源节点 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 0f937e6b..ebbbbcee 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -22,7 +22,7 @@ spring: # sharding-jdbc 配置 shardingsphere: # 显示sharding-jdbc改写的sql语句 - show-sql: true + show-sql: false center-tables-data-node: duanju.%s # 区域表的数据源节点 diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 417330bb..b1a95c4f 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -18,7 +18,7 @@ logs/duanju.log - logs/duanju.%d{yyyy-MM-dd}.%i.log.gz + logs/%d{yyyy-MM-dd}/duanju.%i.log.gz 30 100MB diff --git a/src/main/resources/mapper/app/UserDao.xml b/src/main/resources/mapper/app/UserDao.xml index fa3f38a6..17f4d683 100644 --- a/src/main/resources/mapper/app/UserDao.xml +++ b/src/main/resources/mapper/app/UserDao.xml @@ -5,15 +5,16 @@ - - select - ifnull(sum(one_money),0.00) + sum(ifnull(one_money,0.00)) - ifnull(sum(two_money),0.00) + sum(ifnull(two_money,0.00)) - ifnull(sum(qd_money),0.00) - - - ifnull(sum(one_money),0.00)+ifnull(sum(two_money),0.00)+ifnull(sum(qd_money),0.00) + sum(ifnull(qd_money,0.00)) from orders where status=1 diff --git a/src/main/resources/mapper/pay/CashDao.xml b/src/main/resources/mapper/pay/CashDao.xml index 140f2b9e..81fbb266 100644 --- a/src/main/resources/mapper/pay/CashDao.xml +++ b/src/main/resources/mapper/pay/CashDao.xml @@ -61,10 +61,24 @@ GROUP BY user_id + + + + +