Commit b0132024 authored by liuyang's avatar liuyang

update

parent 49e6b49f
package com.qkdata.biz.enums;
public enum UserSexEnum {
MALE,
FEMALE;
}
package com.qkdata.biz.management.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qkdata.biz.enums.ProductTypeEnum;
import com.qkdata.common.base.entity.BasePO;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -33,7 +34,7 @@ public class OrgUserReceiveRecordPO extends BasePO {
/**
* 产品类型
*/
private String productType;
private ProductTypeEnum productType;
/**
* 领用或分配的数量
......
......@@ -8,8 +8,7 @@ import com.qkdata.biz.management.vo.CourseAllowEnterpriseModel;
import com.qkdata.biz.management.vo.CourseAttachmentModel;
import com.qkdata.biz.management.vo.CourseListItemModel;
import com.qkdata.biz.management.vo.QueryCourseModel;
import com.qkdata.biz.web.vo.SearchCourseConditionModel;
import com.qkdata.biz.web.vo.SearchCourseResultModel;
import com.qkdata.biz.web.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -39,4 +38,8 @@ public interface CourseMapper extends BaseMapper<CoursePO> {
List<SearchCourseResultModel> recommendList(Page page, @Param("p") SearchCourseConditionModel model);
List<CoursePO> findListByTags(List<Long> tagIds);
List<BuyCourseListItem> queryBuyCourseList(Page page, @Param("p") QueryBuyCourseListModel model);
List<SearchCourseResultModel> queryPageListByEnterprise(Page page,@Param("p") QueryMyEnterpriseCourseModel model);
}
package com.qkdata.biz.management.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.OrgSurplusPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.web.vo.OrgCourseSurplusModel;
import com.qkdata.biz.web.vo.QueryOrgCourseSurplusModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -15,4 +21,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrgSurplusMapper extends BaseMapper<OrgSurplusPO> {
List<OrgCourseSurplusModel> queryCourseSurplusPageList(Page page, @Param("p") QueryOrgCourseSurplusModel model);
}
package com.qkdata.biz.management.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.OrgUserReceiveRecordPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.web.vo.OrgUserReceiveRecordModel;
import com.qkdata.biz.web.vo.QueryReceiveHistoryModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -15,4 +21,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrgUserReceiveRecordMapper extends BaseMapper<OrgUserReceiveRecordPO> {
List<OrgUserReceiveRecordModel> queryPageList(Page page, @Param("p") QueryReceiveHistoryModel model);
}
package com.qkdata.biz.management.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.BetweenFormater;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.GetVideoInfoResponse;
......@@ -19,9 +21,7 @@ import com.qkdata.biz.management.mapper.*;
import com.qkdata.biz.management.vo.*;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.web.vo.FullUserInfo;
import com.qkdata.biz.web.vo.SearchCourseConditionModel;
import com.qkdata.biz.web.vo.SearchCourseResultModel;
import com.qkdata.biz.web.vo.*;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
......@@ -31,6 +31,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
......@@ -514,4 +516,45 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
return PageResult.<SearchCourseResultModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
/**
* 查询已购、过期课程分页列表
* @param model
* @return
*/
public PageResult<BuyCourseListItem> queryBuyCourseList(QueryBuyCourseListModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<BuyCourseListItem> list = baseMapper.queryBuyCourseList(page,model);
for (BuyCourseListItem item : list){
//计算剩余有效期
Duration duration = Duration.between(model.getQueryTime(),item.getEndTime());
String validPeriod = DateUtil.formatBetween(duration.toMillis(), BetweenFormater.Level.HOUR);
item.setValidPeriod(validPeriod);
}
return PageResult.<BuyCourseListItem>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
/**
* 查询企业课程列表
* @param model
* @return
*/
public PageResult<SearchCourseResultModel> queryPageListByEnterprise(QueryMyEnterpriseCourseModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<SearchCourseResultModel> list = baseMapper.queryPageListByEnterprise(page,model);
for (SearchCourseResultModel courseModel : list){
List<CourseTagsModel> tagList = tagService.findListByCourseId(courseModel.getCourseId());
courseModel.setTags(tagList);
List<CourseChaperModel> chaperList = chaperList(courseModel.getCourseId());
if (CollUtil.isNotEmpty(chaperList)){
CourseChaperModel chaperModel = chaperList.get(0);
ResourcePO resourcePO = resourceService.getById(chaperModel.getResourceId());
if (resourcePO != null){
courseModel.setDuration(resourcePO.getVideoDuration());
}
}
}
return PageResult.<SearchCourseResultModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
}
\ No newline at end of file
......@@ -87,7 +87,7 @@ public class MemberService {
private SysUserExtPO convertToExtUserPO(MemberInfoModel model) {
SysUserExtPO extUser = new SysUserExtPO();
extUser.setName(model.getName());
extUser.setSex(StrUtil.isNotBlank(model.getSex()) ? model.getSex() : null);
extUser.setSex(model.getSex());
extUser.setAge(model.getAge() != null ? model.getAge() : null);
extUser.setAvatarUrl(StrUtil.isNotBlank(model.getAvatarUrl()) ? model.getAvatarUrl() : null);
extUser.setEnterpriseId(model.getEnterpriseId() != null ? model.getEnterpriseId() : null);
......
package com.qkdata.biz.management.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.enums.ProductTypeEnum;
import com.qkdata.biz.management.entity.OrgSurplusPO;
import com.qkdata.biz.management.mapper.OrgSurplusMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qkdata.biz.web.vo.OrgCourseSurplusModel;
import com.qkdata.biz.web.vo.QueryOrgCourseSurplusModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 企业VIP或课程余额 服务类
......@@ -44,4 +52,40 @@ public class OrgSurplusService extends ServiceImpl<OrgSurplusMapper, OrgSurplusP
updateById(po);
}
}
/**
* 查询企业课程余额列表
* @param model
* @return
*/
public PageResult<OrgCourseSurplusModel> queryCourseSurplusPageList(QueryOrgCourseSurplusModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<OrgCourseSurplusModel> list = baseMapper.queryCourseSurplusPageList(page,model);
return PageResult.<OrgCourseSurplusModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
/**
* 减少企业购买的余额
* @param po
*/
public void subtractCount(OrgSurplusPO po) {
OrgSurplusPO dbPo = null;
if (po.getProductType() == ProductTypeEnum.ENTERPRISE_VIP){
dbPo = getOne(Wrappers.<OrgSurplusPO>lambdaQuery().eq(OrgSurplusPO::getOrgId,po.getOrgId()).eq(OrgSurplusPO::getProductType,po.getProductType()));
}else if (po.getProductType() == ProductTypeEnum.ENTERPRISE_COURSE_BUY){
dbPo = getOne(Wrappers.<OrgSurplusPO>lambdaQuery().eq(OrgSurplusPO::getOrgId,po.getOrgId()).eq(OrgSurplusPO::getCourseId,po.getCourseId()).eq(OrgSurplusPO::getProductType,po.getProductType()));
}
if (dbPo == null){
throw new BusinessException("请求错误,数据不存在");
}else {
int dbCount = dbPo.getCount();
int newCount = dbCount - po.getCount();
if (newCount < 0){
throw new BusinessException("企业余额不足,不能领用");
}
dbPo.setCount(newCount);
updateById(dbPo);
}
}
}
\ No newline at end of file
package com.qkdata.biz.management.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.OrgUserReceiveRecordPO;
import com.qkdata.biz.management.mapper.OrgUserReceiveRecordMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qkdata.biz.web.vo.OrgUserReceiveRecordModel;
import com.qkdata.biz.web.vo.QueryReceiveHistoryModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.model.PageResult;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 企业成员领用或分配记录 服务类
......@@ -16,4 +23,9 @@ import org.springframework.stereotype.Service;
@Service
public class OrgUserReceiveRecordService extends ServiceImpl<OrgUserReceiveRecordMapper, OrgUserReceiveRecordPO> {
public PageResult<OrgUserReceiveRecordModel> queryPageList(QueryReceiveHistoryModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<OrgUserReceiveRecordModel> list = baseMapper.queryPageList(page,model);
return PageResult.<OrgUserReceiveRecordModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
}
\ No newline at end of file
......@@ -127,6 +127,8 @@ public class OrganizationService extends BaseServiceImpl<OrganizationMapper, Org
private Long savePO(EnterpriseModel model) {
OrganizationPO po = new OrganizationPO();
po.setName(model.getName());
po.setContactName(model.getAdminName());
po.setContactTel(model.getAdminMobile());
po.setType(OrgTypeEnum.ENTERPRISE);
po.setLogoUrl(model.getLogoUrl());
po.setProvince(model.getProvince());
......
......@@ -27,9 +27,7 @@ import com.qkdata.biz.sys.service.SysConfigService;
import com.qkdata.biz.sys.service.SysRoleService;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.sys.vo.SysRoleModel;
import com.qkdata.biz.web.vo.CreateOrderResult;
import com.qkdata.biz.web.vo.FullUserInfo;
import com.qkdata.biz.web.vo.UserBuyVIPModel;
import com.qkdata.biz.web.vo.*;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
......@@ -257,4 +255,6 @@ public class ProductOrderService extends ServiceImpl<ProductOrderMapper, Product
}
}
}
\ No newline at end of file
......@@ -56,7 +56,7 @@ public class UserCourseAuthService extends ServiceImpl<UserCourseAuthMapper, Use
}
}
private UserCourseAuthPO getByUserIdAndCourseId(Long userId, Long courseId) {
public UserCourseAuthPO getByUserIdAndCourseId(Long userId, Long courseId) {
return getOne(Wrappers.<UserCourseAuthPO>lambdaQuery().eq(UserCourseAuthPO::getUserId,userId).eq(UserCourseAuthPO::getCourseId,courseId));
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.qkdata.biz.management.vo;
import com.qkdata.biz.enums.AccountStatusEnum;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.biz.enums.UserSexEnum;
import lombok.Data;
import java.time.LocalDateTime;
......@@ -49,7 +50,7 @@ public class MemberInfoModel {
/**
* 性别
*/
private String sex;
private UserSexEnum sex;
/**
* 年龄
......
......@@ -2,6 +2,7 @@ package com.qkdata.biz.sys.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.biz.enums.UserSexEnum;
import com.qkdata.common.base.entity.BasePO;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -38,7 +39,7 @@ public class SysUserExtPO extends BasePO {
/**
* 性别
*/
private String sex;
private UserSexEnum sex;
/**
* 年龄
......
......@@ -7,6 +7,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.qkdata.biz.enums.AccountStatusEnum;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.biz.enums.ProductTypeEnum;
import com.qkdata.biz.management.entity.OrgSurplusPO;
import com.qkdata.biz.management.entity.OrgUserReceiveRecordPO;
import com.qkdata.biz.management.entity.UserCourseAuthPO;
import com.qkdata.biz.management.service.OrgSurplusService;
import com.qkdata.biz.management.service.OrgUserReceiveRecordService;
import com.qkdata.biz.management.service.UserCourseAuthService;
import com.qkdata.biz.sys.entity.SysUserExtPO;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.mapper.SysUserExtMapper;
......@@ -16,6 +23,7 @@ import com.qkdata.biz.sys.vo.SysRoleModel;
import com.qkdata.biz.sys.vo.SysUserListModel;
import com.qkdata.biz.sys.vo.SysUserModel;
import com.qkdata.biz.web.vo.FullUserInfo;
import com.qkdata.biz.web.vo.ModifyUserInfoModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
......@@ -41,6 +49,12 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
private SysRoleService sysRoleService;
@Autowired
private SysUserExtMapper sysUserExtMapper;
@Autowired
private OrgSurplusService orgSurplusService;
@Autowired
private OrgUserReceiveRecordService orgUserReceiveRecordService;
@Autowired
private UserCourseAuthService userCourseAuthService;
public SysUserPO getByUsername(String username) {
return baseMapper.selectOne(Wrappers.<SysUserPO>lambdaQuery().eq(SysUserPO::getUsername,username));
......@@ -179,4 +193,91 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
}
return null;
}
/**
* 修改用户个人信息
* @param model
*/
public void modifyUserInfo(ModifyUserInfoModel model) {
SysUserPO userPO = getById(model.getId());
if (userPO != null){
userPO.setNickName(model.getNickName());
updateById(userPO);
}
SysUserExtPO extPO = sysUserExtMapper.selectOne(Wrappers.<SysUserExtPO>lambdaQuery().eq(SysUserExtPO::getUserId,model.getId()));
if(extPO != null){
extPO.setName(model.getName());
extPO.setSex(model.getSex());
extPO.setAge(model.getAge());
extPO.setAvatarUrl(model.getAvatarUrl());
sysUserExtMapper.updateById(extPO);
}
}
/**
* 当前用户领取企业VIP
*/
@Transactional
public void receiveOrgVIP() {
FullUserInfo userInfo = findFullUserInfo(UserContext.getUser().getUsername());
if (userInfo.getType() != AccountTypeEnum.ENTERPRISE_VIP || userInfo.getEnterpriseId() == null){
throw new BusinessException("只有企业成员才可领取会员");
}
if (userInfo.getVipStartTime() != null && userInfo.getVipEndTime() != null){
LocalDateTime now = LocalDateTime.now();
if (now.isAfter(userInfo.getVipStartTime()) && now.isBefore(userInfo.getVipEndTime())){
throw new BusinessException("您的企业会员生效中,请过期后再领取");
}
}
//减少企业余额
OrgSurplusPO po = new OrgSurplusPO();
po.setOrgId(userInfo.getEnterpriseId());
po.setProductType(ProductTypeEnum.ENTERPRISE_VIP);
po.setCount(1);
orgSurplusService.subtractCount(po);
//添加领用记录
OrgUserReceiveRecordPO orgUserReceiveRecordPO = new OrgUserReceiveRecordPO();
orgUserReceiveRecordPO.setUserId(userInfo.getId());
orgUserReceiveRecordPO.setOrgId(userInfo.getEnterpriseId());
orgUserReceiveRecordPO.setCount(1);
orgUserReceiveRecordPO.setProductType(ProductTypeEnum.ENTERPRISE_VIP);
orgUserReceiveRecordService.save(orgUserReceiveRecordPO);
}
/**
* 领取企业课程
* @param courseId
*/
@Transactional
public void receiveOrgCourse(Long courseId) {
FullUserInfo userInfo = findFullUserInfo(UserContext.getUser().getUsername());
if (userInfo.getType() != AccountTypeEnum.ENTERPRISE_VIP || userInfo.getEnterpriseId() == null){
throw new BusinessException("只有企业成员才可领取会员");
}
//验证当前用户是否领取过该课程,并且未过期,则提示不能领取
UserCourseAuthPO auth = userCourseAuthService.getByUserIdAndCourseId(userInfo.getId(),courseId);
if (auth != null){
LocalDateTime now = LocalDateTime.now();
if (now.isAfter(auth.getStartTime()) && now.isBefore(auth.getEndTime())){
throw new BusinessException("您已领取过该课程,并在有效期内,不可重覆领取");
}
}
//减少企业余额
OrgSurplusPO po = new OrgSurplusPO();
po.setOrgId(userInfo.getEnterpriseId());
po.setCourseId(courseId);
po.setProductType(ProductTypeEnum.ENTERPRISE_COURSE_BUY);
po.setCount(1);
orgSurplusService.subtractCount(po);
//添加领用记录
OrgUserReceiveRecordPO orgUserReceiveRecordPO = new OrgUserReceiveRecordPO();
orgUserReceiveRecordPO.setUserId(userInfo.getId());
orgUserReceiveRecordPO.setOrgId(userInfo.getEnterpriseId());
orgUserReceiveRecordPO.setCourseId(courseId);
orgUserReceiveRecordPO.setCount(1);
orgUserReceiveRecordPO.setProductType(ProductTypeEnum.ENTERPRISE_COURSE_BUY);
orgUserReceiveRecordService.save(orgUserReceiveRecordPO);
}
}
......@@ -3,12 +3,11 @@ package com.qkdata.biz.web.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qkdata.biz.enums.SwiperStatusEnum;
import com.qkdata.biz.management.entity.CourseTagPO;
import com.qkdata.biz.management.service.CourseService;
import com.qkdata.biz.management.service.CourseTagService;
import com.qkdata.biz.management.service.RecommendConfigService;
import com.qkdata.biz.management.service.SwiperConfigService;
import com.qkdata.biz.management.entity.TeacherPO;
import com.qkdata.biz.management.service.*;
import com.qkdata.biz.management.vo.CourseDetailModel;
import com.qkdata.biz.management.vo.SwiperConfigModel;
import com.qkdata.biz.management.vo.TeacherModel;
import com.qkdata.biz.web.service.UserCenterService;
import com.qkdata.biz.web.vo.MainPageModel;
import com.qkdata.biz.web.vo.SearchCourseConditionModel;
......@@ -39,6 +38,8 @@ public class MainPageController {
private CourseTagService tagService;
@Autowired
private UserCenterService userCenterService;
@Autowired
private TeacherService teacherService;
@ApiOperation("获取配置信息")
@GetMapping("")
......@@ -87,4 +88,10 @@ public class MainPageController {
return Result.succeed(model);
}
@ApiOperation("获取教师信息")
@GetMapping("/teacher/{teacherId}")
public Result<TeacherPO> getTeacherInfo(@PathVariable Long teacherId){
return Result.succeed(teacherService.getById(teacherId));
}
}
package com.qkdata.biz.web.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.biz.enums.ProductTypeEnum;
import com.qkdata.biz.management.entity.OrgSurplusPO;
import com.qkdata.biz.management.entity.OrganizationPO;
import com.qkdata.biz.management.service.CourseService;
import com.qkdata.biz.management.service.OrgSurplusService;
import com.qkdata.biz.management.service.OrgUserReceiveRecordService;
import com.qkdata.biz.management.service.OrganizationService;
import com.qkdata.biz.management.vo.MemberInfoModel;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.web.vo.*;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.base.model.Result;
import com.qkdata.common.util.UserContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Api(tags = "我的企业相关接口-手机端")
@RestController
@RequestMapping("/api/myEnterPrise")
public class MyEnterpriseController {
@Autowired
private OrganizationService orgService;
@Autowired
private SysUserService userService;
@Autowired
private CourseService courseService;
@Autowired
private OrgSurplusService orgSurplusService;
@Autowired
private OrgUserReceiveRecordService orgUserReceiveRecordService;
@ApiOperation("获取我的企业信息")
@GetMapping("/info")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<OrganizationPO> info(){
FullUserInfo userInfo = userService.findFullUserInfo(UserContext.getUser().getUsername());
if (userInfo.getType() != AccountTypeEnum.ENTERPRISE_VIP || userInfo.getEnterpriseId() == null){
throw new BusinessException("您目前还不是企业会员");
}
OrganizationPO po = orgService.getById(userInfo.getEnterpriseId());
if (po == null){
throw new BusinessException("请求错误,企业信息不存在");
}
return Result.succeed(po);
}
@ApiOperation("获取企业课程列表")
@PostMapping("/list")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<SearchCourseResultModel> list(@RequestBody QueryMyEnterpriseCourseModel model){
FullUserInfo userInfo = userService.findFullUserInfo(UserContext.getUser().getUsername());
if (userInfo.getType() != AccountTypeEnum.ENTERPRISE_VIP || userInfo.getEnterpriseId() == null){
throw new BusinessException("请求错误,当前用户非企业用户");
}
return courseService.queryPageListByEnterprise(model);
}
@ApiOperation("获取企业会员余额")
@GetMapping("/orgSurplus")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<OrgSurplusPO> getOrgSurplus(){
Long orgId = userService.getUserEnterpriesId(UserContext.getUserId());
OrgSurplusPO result = orgSurplusService.getOne(Wrappers.<OrgSurplusPO>lambdaQuery().eq(OrgSurplusPO::getOrgId,orgId).eq(OrgSurplusPO::getProductType,ProductTypeEnum.ENTERPRISE_VIP));
return Result.succeed(result);
}
@ApiOperation("获取企业购买课程余额列表")
@PostMapping("/orgCourseSurplus")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<OrgCourseSurplusModel> orgCourseSurplusList(@RequestBody QueryOrgCourseSurplusModel model){
Long orgId = userService.getUserEnterpriesId(UserContext.getUserId());
model.setOrgId(orgId);
return orgSurplusService.queryCourseSurplusPageList(model);
}
@ApiOperation("领取会员")
@GetMapping("/receiveVIP")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<String> receiveVIP(){
userService.receiveOrgVIP();
return Result.succeed("ok");
}
@ApiOperation("领取企业购买课程")
@GetMapping("/receiveCourse/{courseId}")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<String> receiveCourse(@PathVariable Long courseId){
userService.receiveOrgCourse(courseId);
return Result.succeed("ok");
}
@ApiOperation("领取会员历史记录列表")
@PostMapping("/history/receiveVIP")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<OrgUserReceiveRecordModel> receiveVIPHistory(@RequestBody QueryReceiveHistoryModel model){
model.setUserId(UserContext.getUserId());
return orgUserReceiveRecordService.queryPageList(model);
}
@ApiOperation("修改企业信息")
@PostMapping("/info/update")
@RequiresRoles(value = BizConstants.ROLE_ENTERPRISE_ADMIN)
public Result<String> updateOrgInfo(@RequestBody OrganizationPO orgInfo){
orgService.updateById(orgInfo);
return Result.succeed("ok");
}
// @ApiOperation("企业成员列表")
// @PostMapping("/member/list")
// @RequiresRoles(value = BizConstants.ROLE_ENTERPRISE_ADMIN)
// public PageResult<MemberInfoModel>
}
......@@ -5,7 +5,9 @@ import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.enums.ProductOrderStatusEnum;
import com.qkdata.biz.management.service.CourseService;
import com.qkdata.biz.management.service.ProductOrderService;
import com.qkdata.biz.management.vo.ProductOrderModel;
import com.qkdata.biz.management.vo.QueryFavoriteCourseModel;
import com.qkdata.biz.management.vo.QueryProductOrderModel;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.web.service.UserCenterService;
import com.qkdata.biz.web.vo.*;
......@@ -43,6 +45,14 @@ public class UserCenterController {
FullUserInfo userInfo = sysUserService.findFullUserInfo(username);
return Result.succeed(userInfo);
}
@ApiOperation("修改个人信息")
@PostMapping("/userInfo/modify")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<String> modifyUserInfo(@RequestBody ModifyUserInfoModel model){
model.setId(UserContext.getUserId());
sysUserService.modifyUserInfo(model);
return Result.succeed("ok");
}
@ApiOperation("获取收藏列表")
@PostMapping("/myFavorite/list")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
......@@ -102,5 +112,19 @@ public class UserCenterController {
ProductOrderStatusEnum status = orderService.queryStatus(orderNo);
return Result.succeed(status);
}
@ApiOperation("已购课程列表")
@PostMapping("/course/buy/list")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<BuyCourseListItem> buyCourseList(@RequestBody QueryBuyCourseListModel model){
model.setUserId(UserContext.getUserId());
return courseService.queryBuyCourseList(model);
}
@ApiOperation("用户购买记录列表")
@PostMapping("/user/order/list")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<ProductOrderModel> userOrderList(@RequestBody QueryProductOrderModel model){
model.setUsername(UserContext.getUser().getUsername());
return orderService.queryPageList(model);
}
}
package com.qkdata.biz.web.vo;
import com.qkdata.biz.enums.CourseStatusEnum;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class BuyCourseListItem {
private Long courseId;
private String courseName;
private CourseStatusEnum status;
private String logoUrl;
private Boolean isDel;
private LocalDateTime startTime;
private LocalDateTime endTime;
private String validPeriod;
}
package com.qkdata.biz.web.vo;
import com.qkdata.biz.enums.UserSexEnum;
import lombok.Data;
@Data
public class ModifyUserInfoModel {
private Long id;
private String nickName;
private String name;
private String avatarUrl;
private UserSexEnum sex;
private Integer age;
}
package com.qkdata.biz.web.vo;
import lombok.Data;
@Data
public class OrgCourseSurplusModel {
private Long courseId;
private String courseName;
private String logoUrl;
private Integer count;
}
package com.qkdata.biz.web.vo;
import com.qkdata.biz.enums.ProductTypeEnum;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class OrgUserReceiveRecordModel {
private ProductTypeEnum productType;
private Integer count;
private String courseName;
private LocalDateTime createTime;
}
package com.qkdata.biz.web.vo;
import com.qkdata.common.constants.Constants;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class QueryBuyCourseListModel {
private int pageIndex = Constants.DEFAULT_PAGE;
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
/**
* 是否过期,默认false为未过期的
*/
private boolean isExpired = false;
/**
* 查询时间,默认当前请求时间
*/
private LocalDateTime queryTime = LocalDateTime.now();
private Long userId;
}
package com.qkdata.biz.web.vo;
import com.qkdata.common.constants.Constants;
import lombok.Data;
@Data
public class QueryMyEnterpriseCourseModel {
private int pageIndex = Constants.DEFAULT_PAGE;
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private Long orgId;
}
package com.qkdata.biz.web.vo;
import com.qkdata.common.constants.Constants;
import lombok.Data;
@Data
public class QueryOrgCourseSurplusModel {
private int pageIndex = Constants.DEFAULT_PAGE;
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private Long orgId;
}
package com.qkdata.biz.web.vo;
import com.qkdata.biz.enums.ProductTypeEnum;
import com.qkdata.common.constants.Constants;
import lombok.Data;
@Data
public class QueryReceiveHistoryModel {
private int pageIndex = Constants.DEFAULT_PAGE;
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private Long userId;
private ProductTypeEnum productType;
}
......@@ -92,11 +92,7 @@ jwt:
- /api/sms/sendCode
- /api/web/login/**
- /api/web/mainPage
- /api/web/mainPage/course/recommend/list
- /api/web/mainPage/course/search
- /api/web/mainPage/course/tags
- /api/web/mainPage/course/recommend/*
- /api/web/mainPage/course/*
- /api/web/mainPage/**
aud: qkdata
exp: 720 #24*30 30天
......
......@@ -107,4 +107,36 @@
#{tagId}
</foreach>
</select>
<select id="queryBuyCourseList" resultType="com.qkdata.biz.web.vo.BuyCourseListItem">
SELECT c.id course_id,
c.`name` course_name,
c.`status`,
c.logo_url,
c.is_del,
a.start_time,
a.end_time
FROM course c
INNER JOIN user_course_auth a on c.id = a.course_id
where a.user_id = #{p.userId}
<if test="p.isExpired == false">
and a.start_time &lt;= #{p.queryTime} and a.end_time &gt;= #{p.queryTime}
</if>
<if test="p.isExpired == true">
and a.start_time &gt;= #{p.queryTime} and a.end_time &lt;= #{p.queryTime}
</if>
</select>
<select id="queryPageListByEnterprise" resultType="com.qkdata.biz.web.vo.SearchCourseResultModel">
SELECT c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url,
c.teacher_id
from course c
INNER JOIN allow_org_course a ON a.course_id = c.id
WHERE c.is_del = 0
and c.`status` = 'UP'
and c.allow = 'SPECIFY'
and a.org_id = #{p.orgId}
</select>
</mapper>
......@@ -2,4 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qkdata.biz.management.mapper.OrgSurplusMapper">
<select id="queryCourseSurplusPageList" resultType="com.qkdata.biz.web.vo.OrgCourseSurplusModel">
SELECT c.id course_id,
c.`name` course_name,
c.logo_url,
s.count
from org_surplus s
INNER JOIN course c ON s.course_id = c.id
WHERE s.org_id = #{p.orgId}
</select>
</mapper>
......@@ -2,4 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qkdata.biz.management.mapper.OrgUserReceiveRecordMapper">
<select id="queryPageList" resultType="com.qkdata.biz.web.vo.OrgUserReceiveRecordModel">
SELECT r.product_type,
r.count,
r.create_time,
c.`name` course_name
FROM org_user_receive_record r
LEFT JOIN course c on r.course_id = c.id
WHERE r.user_id = #{p.userId}
<if test="p.productType != null">
AND r.product_type = #{p.productType}
</if>
order by r.create_time desc
</select>
</mapper>
......@@ -10,7 +10,8 @@
INNER JOIN sys_user u on o.user_id = u.id
where 1 = 1
<if test="p.username != null and p.username != ''">
and u.username like concat ('%',#{username},'%')
and u.username like concat ('%',#{p.username},'%')
</if>
order by `status` DESC,create_time DESC
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment