diff --git a/src/main/java/com/peanut/modules/master/controller/UserManageController.java b/src/main/java/com/peanut/modules/master/controller/UserManageController.java index 86a3852d..e244bb31 100644 --- a/src/main/java/com/peanut/modules/master/controller/UserManageController.java +++ b/src/main/java/com/peanut/modules/master/controller/UserManageController.java @@ -1,9 +1,10 @@ package com.peanut.modules.master.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.R; -import com.peanut.modules.common.entity.CourseEntity; -import com.peanut.modules.common.entity.UserCourseBuyEntity; +import com.peanut.modules.common.entity.*; import com.peanut.modules.master.service.CourseService; +import com.peanut.modules.master.service.MyUserService; import com.peanut.modules.master.service.UserManageService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +29,9 @@ public class UserManageController { @Autowired private CourseService courseService; + @Autowired + private MyUserService userService; + //数据合并 @RequestMapping("/userMerge") public R userMerge(@RequestBody Map params) { @@ -40,13 +44,47 @@ public class UserManageController { return mergeService.addUserCourseBuy(userCourseBuyEntity); } - //课程列表带下级 + //课程列表 @RequestMapping("/courseAndChildrenList") public R courseAndChildrenList(@RequestBody Map params) { List list = courseService.courseAndChildrenList(params); return R.ok().put("list",list); } + //课程目录列表 + @RequestMapping("/catalogueListByCourse") + public R catalogueListByCourse(@RequestBody Map params) { + List list = courseService.catalogueListByCourse(params); + return R.ok().put("list",list); + } + + //获取用户已有课程列表 + @RequestMapping("/getUserCourseList") + public R getUserCourseList(@RequestBody Map params) { + Page> page = courseService.getUserCourseList(params); + return R.ok().put("result",page); + } + + //获取vip用户列表 + @RequestMapping("/getVipList") + public R getVipList(@RequestBody Map params) { + Page> page = userService.getVipList(params); + return R.ok().put("result",page); + } + + //获取vip历史开通记录 + @RequestMapping("/getVipHistoryList") + public R getVipHistoryList(@RequestBody Map params) { + Page page = userService.getVipHistoryList(params); + return R.ok().put("result",page); + } + + //获取vip历史开通记录 + @RequestMapping("/activateVIP") + public R activateVIP(@RequestBody UserVipLog vipLog) { + return userService.activateVIP(vipLog); + } + diff --git a/src/main/java/com/peanut/modules/master/service/CourseService.java b/src/main/java/com/peanut/modules/master/service/CourseService.java index 076d3b6c..0c9f67aa 100644 --- a/src/main/java/com/peanut/modules/master/service/CourseService.java +++ b/src/main/java/com/peanut/modules/master/service/CourseService.java @@ -3,8 +3,7 @@ package com.peanut.modules.master.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.peanut.common.utils.R; -import com.peanut.modules.common.entity.CourseEntity; -import com.peanut.modules.common.entity.ShopProduct; +import com.peanut.modules.common.entity.*; import com.peanut.modules.common.to.ParamTo; import java.util.List; @@ -33,4 +32,8 @@ public interface CourseService extends IService { R getCourseLableLinkList(Map param); Page getProductListForCourse(Map param); + + List catalogueListByCourse(Map params); + + Page> getUserCourseList(Map params); } diff --git a/src/main/java/com/peanut/modules/master/service/MyUserService.java b/src/main/java/com/peanut/modules/master/service/MyUserService.java index 5c33af61..fd1e9963 100644 --- a/src/main/java/com/peanut/modules/master/service/MyUserService.java +++ b/src/main/java/com/peanut/modules/master/service/MyUserService.java @@ -1,7 +1,20 @@ package com.peanut.modules.master.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.R; import com.peanut.modules.common.entity.MyUserEntity; +import com.peanut.modules.common.entity.UserVip; +import com.peanut.modules.common.entity.UserVipLog; + +import java.util.Map; public interface MyUserService extends IService { + + Page> getVipList(Map params); + + Page getVipHistoryList(Map params); + + R activateVIP(UserVipLog vipLog); + } diff --git a/src/main/java/com/peanut/modules/master/service/impl/CourseServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/CourseServiceImpl.java index 0d54d0f5..d2bd7d71 100644 --- a/src/main/java/com/peanut/modules/master/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/peanut/modules/master/service/impl/CourseServiceImpl.java @@ -204,14 +204,6 @@ public class CourseServiceImpl extends ServiceImpl impl LambdaQueryWrapper cwrapper = new LambdaQueryWrapper<>(); cwrapper.like(CourseEntity::getTitle,params.get("title")); List courseList = this.list(cwrapper); - if (courseList!=null && courseList.size() > 0){ - for (CourseEntity c : courseList) { - LambdaQueryWrapper catalogueWrapper = new LambdaQueryWrapper<>(); - catalogueWrapper.eq(CourseCatalogueEntity::getCourseId,c.getId()); - List catalogueList = courseCatalogueDao.selectList(catalogueWrapper); - c.setCourseCatalogueEntityList(catalogueList); - } - } return courseList; } @@ -305,6 +297,35 @@ public class CourseServiceImpl extends ServiceImpl impl return resPage; } + @Override + public List catalogueListByCourse(Map params) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CourseCatalogueEntity::getCourseId,params.get("courseId")); + queryWrapper.orderByAsc(CourseCatalogueEntity::getSort); + List list = courseCatalogueDao.selectList(queryWrapper); + return list; + } + + @Override + public Page> getUserCourseList(Map params) { + Integer limit = Integer.valueOf(params.get("limit").toString()); + Integer page = Integer.valueOf(params.get("page").toString()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.selectAll(CourseEntity.class); + wrapper.selectAs(CourseCatalogueEntity::getTitle,"catalogueName"); + wrapper.selectAs(UserCourseBuyEntity::getStartTime,"startTime"); + wrapper.selectAs(UserCourseBuyEntity::getEndTime,"endTime"); + wrapper.rightJoin(UserCourseBuyEntity.class,UserCourseBuyEntity::getCourseId,CourseEntity::getId); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getId,UserCourseBuyEntity::getCatalogueId); + if (StringUtils.isNotBlank(params.get("title").toString())){ + wrapper.like(CourseEntity::getTitle,params.get("title")); + } + wrapper.eq(UserCourseBuyEntity::getUserId,params.get("userId")); + wrapper.orderByAsc(CourseEntity::getSort); + Page> pageRes = this.pageMaps(new Page<>(page, limit), wrapper); + return pageRes; + } + private CourseMedicine getPCourseMedicine(CourseMedicine m){ if (m.getPid()!=0){ CourseMedicine pm = medicalDao.selectById(m.getPid()); diff --git a/src/main/java/com/peanut/modules/master/service/impl/MyUserServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/MyUserServiceImpl.java index ce6c9e03..6bade8d3 100644 --- a/src/main/java/com/peanut/modules/master/service/impl/MyUserServiceImpl.java +++ b/src/main/java/com/peanut/modules/master/service/impl/MyUserServiceImpl.java @@ -1,13 +1,116 @@ package com.peanut.modules.master.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.peanut.common.utils.DateUtil; +import com.peanut.common.utils.R; +import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.dao.MyUserDao; -import com.peanut.modules.common.entity.MyUserEntity; +import com.peanut.modules.common.dao.UserVipDao; +import com.peanut.modules.common.dao.UserVipLogDao; +import com.peanut.modules.common.entity.*; import com.peanut.modules.master.service.MyUserService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.time.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.List; +import java.util.Map; + @Slf4j @Service("masterMyUserService") public class MyUserServiceImpl extends ServiceImpl implements MyUserService { + + @Autowired + public MyUserDao userDao; + @Autowired + public UserVipDao userVipDao; + @Autowired + public UserVipLogDao userVipLogDao; + + @Override + public Page> getVipList(Map params) { + Integer limit = Integer.valueOf(params.get("limit").toString()); + Integer page = Integer.valueOf(params.get("page").toString()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.selectAll(MyUserEntity.class); + wrapper.selectAs(UserVip::getStartTime,"startTime"); + wrapper.selectAs(UserVip::getEndTime,"endTime"); + wrapper.leftJoin(UserVip.class,UserVip::getUserId,MyUserEntity::getId); + wrapper.eq(MyUserEntity::getVip,params.get("type")); + wrapper.eq(UserVip::getState,0); + if (StringUtils.isNotBlank(params.get("userWords").toString())){ + wrapper.and(t->t.like(MyUserEntity::getName,params.get("userWords")).or().like(MyUserEntity::getNickname,params.get("userWords")) + .or().like(MyUserEntity::getEmail,params.get("userWords")).or().like(MyUserEntity::getTel,params.get("userWords"))); + } + Page> pageRes = userDao.selectMapsPage(new Page<>(page, limit), wrapper); + return pageRes; + } + + @Override + public Page getVipHistoryList(Map params) { + Integer limit = Integer.valueOf(params.get("limit").toString()); + Integer page = Integer.valueOf(params.get("page").toString()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.eq(UserVip::getUserId,params.get("userId")); + wrapper.orderByDesc(UserVip::getEndTime); + if (StringUtils.isNotBlank(params.get("startTime").toString())){ + wrapper.ge(UserVip::getStartTime, params.get("startTime")); + } + if (StringUtils.isNotBlank(params.get("endTime").toString())){ + wrapper.ge(UserVip::getEndTime, params.get("endTime")); + } + Page pageRes = userVipDao.selectPage(new Page<>(page, limit), wrapper); + return pageRes; + } + + @Override + public R activateVIP(UserVipLog vipLog) { + MyUserEntity user = userDao.selectOne(new LambdaQueryWrapper().eq(MyUserEntity::getId,vipLog.getUserId())); + if ("2".equals(user.getVip())){ + if (vipLog.getType()==3) { + return R.error("当前为医学vip,只能升级成超级vip"); + } + } + if ("3".equals(user.getVip())){ + if (vipLog.getType()==2) { + return R.error("当前为国学vip,只能升级成超级vip"); + } + } + if (user.getPeanutCoin().compareTo(vipLog.getPoint())<0){ + return R.error("虚拟币不足"); + } + if (user.getJf().compareTo(vipLog.getJf())<0){ + return R.error("积分不足"); + } + //先将原VIP失效 + List userVip = userVipDao.selectList(new LambdaQueryWrapper().eq(UserVip::getUserId,vipLog.getUserId()).eq(UserVip::getState,0)); + if (userVip.size()>0){ + for (UserVip u : userVip) { + u.setState(1);; + userVipDao.updateById(u); + } + } + //添加生成VIP记录 + vipLog.setAdminId(Integer.parseInt(ShiroUtils.getUserId().toString())); + userVipLogDao.insert(vipLog); + //扣除虚拟币和积分 + user.setPeanutCoin(user.getPeanutCoin().subtract(vipLog.getPoint())); + user.setJf(user.getJf().subtract(vipLog.getJf())); + userDao.updateById(user); + //新建用户vip + UserVip newUserVip = new UserVip(); + newUserVip.setUserId(vipLog.getUserId()); + newUserVip.setType(vipLog.getType()); + newUserVip.setStartTime(new Date()); + newUserVip.setEndTime(DateUtils.addDays(newUserVip.getStartTime(),vipLog.getDays())); + userVipDao.insert(newUserVip); + return R.ok(); + } + }