添加的功能:小程序端用户查看当前课程推广码
修改的bug: Web端管理员根据课程id分页查询课程章节
This commit is contained in:
@ -20,6 +20,7 @@ import com.greenorange.promotion.model.dto.course.CourseQueryRequest;
|
||||
import com.greenorange.promotion.model.dto.course.CourseUpdateRequest;
|
||||
import com.greenorange.promotion.model.entity.Course;
|
||||
import com.greenorange.promotion.model.entity.CourseChapter;
|
||||
import com.greenorange.promotion.model.entity.CourseQrcodeApply;
|
||||
import com.greenorange.promotion.model.entity.ProjectCommission;
|
||||
import com.greenorange.promotion.model.vo.course.CourseCardVO;
|
||||
import com.greenorange.promotion.model.vo.course.CourseDetailVO;
|
||||
@ -27,6 +28,7 @@ import com.greenorange.promotion.model.vo.course.CourseVO;
|
||||
import com.greenorange.promotion.model.vo.courseChapter.CourseChapterVO;
|
||||
import com.greenorange.promotion.service.common.CommonService;
|
||||
import com.greenorange.promotion.service.course.CourseChapterService;
|
||||
import com.greenorange.promotion.service.course.CourseQrcodeApplyService;
|
||||
import com.greenorange.promotion.service.course.CourseService;
|
||||
import com.greenorange.promotion.service.wechat.WechatGetQrcodeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@ -67,6 +69,9 @@ public class CourseController {
|
||||
@Resource
|
||||
private WechatGetQrcodeService wechatGetQrcodeService;
|
||||
|
||||
@Resource
|
||||
private CourseQrcodeApplyService courseQrcodeApplyService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -160,6 +165,27 @@ public class CourseController {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 小程序端用户查看当前课程推广码
|
||||
* @param commonRequest 课程id
|
||||
* @return 课程推广码(view值)
|
||||
*/
|
||||
@PostMapping("verify")
|
||||
@Operation(summary = "小程序端用户查看当前课程推广码", description = "参数:课程id,权限:管理员,方法名:verifyIsApplyCourseQrcode")
|
||||
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
|
||||
@SysLog(title = "课程管理", content = "小程序端用户查看当前课程推广码")
|
||||
public BaseResponse<String> verifyIsApplyCourseQrcode(@Valid @RequestBody CommonRequest commonRequest, HttpServletRequest request) {
|
||||
Long userId = (Long) request.getAttribute("userId");
|
||||
Long courseId = commonRequest.getId();
|
||||
LambdaQueryWrapper<CourseQrcodeApply> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(CourseQrcodeApply::getUserId, userId).eq(CourseQrcodeApply::getCourseId, courseId);
|
||||
CourseQrcodeApply courseQrcodeApply = courseQrcodeApplyService.getOne(lambdaQueryWrapper);
|
||||
ThrowUtils.throwIf(courseQrcodeApply == null, ErrorCode.OPERATION_ERROR, "当前用户尚未申请该课程的推广码");
|
||||
return ResultUtils.success(courseQrcodeApply.getCourseQrcode());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,18 @@
|
||||
package com.greenorange.promotion.mapper;
|
||||
|
||||
import com.greenorange.promotion.model.entity.CourseQrcodeApply;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author 35880
|
||||
* @description 针对表【course_qrcode_apply(课程推广码申请表)】的数据库操作Mapper
|
||||
* @createDate 2025-06-24 22:10:39
|
||||
* @Entity com.greenorange.promotion.model.entity.CourseQrcodeApply
|
||||
*/
|
||||
public interface CourseQrcodeApplyMapper extends BaseMapper<CourseQrcodeApply> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,63 @@
|
||||
package com.greenorange.promotion.model.entity;
|
||||
|
||||
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.util.Date;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 课程推广码申请表
|
||||
* @TableName course_qrcode_apply
|
||||
*/
|
||||
@TableName(value ="course_qrcode_apply")
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class CourseQrcodeApply implements Serializable {
|
||||
/**
|
||||
* 课程推广码申请id
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 课程id
|
||||
*/
|
||||
private Long courseId;
|
||||
|
||||
/**
|
||||
* 课程推广码(view值)
|
||||
*/
|
||||
private String courseQrcode;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Integer isDelete;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.greenorange.promotion.service.course;
|
||||
|
||||
import com.greenorange.promotion.model.entity.CourseQrcodeApply;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author 35880
|
||||
* @description 针对表【course_qrcode_apply(课程推广码申请表)】的数据库操作Service
|
||||
* @createDate 2025-06-24 22:10:39
|
||||
*/
|
||||
public interface CourseQrcodeApplyService extends IService<CourseQrcodeApply> {
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.greenorange.promotion.service.course.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.greenorange.promotion.model.entity.CourseQrcodeApply;
|
||||
import com.greenorange.promotion.service.course.CourseQrcodeApplyService;
|
||||
import com.greenorange.promotion.mapper.CourseQrcodeApplyMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author 35880
|
||||
* @description 针对表【course_qrcode_apply(课程推广码申请表)】的数据库操作Service实现
|
||||
* @createDate 2025-06-24 22:10:39
|
||||
*/
|
||||
@Service
|
||||
public class CourseQrcodeApplyServiceImpl extends ServiceImpl<CourseQrcodeApplyMapper, CourseQrcodeApply>
|
||||
implements CourseQrcodeApplyService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -17,8 +17,10 @@ import com.greenorange.promotion.exception.BusinessException;
|
||||
import com.greenorange.promotion.mapper.UserInfoMapper;
|
||||
import com.greenorange.promotion.model.dto.CommonRequest;
|
||||
import com.greenorange.promotion.model.entity.Course;
|
||||
import com.greenorange.promotion.model.entity.CourseQrcodeApply;
|
||||
import com.greenorange.promotion.model.entity.FileInfo;
|
||||
import com.greenorange.promotion.model.entity.UserInfo;
|
||||
import com.greenorange.promotion.service.course.CourseQrcodeApplyService;
|
||||
import com.greenorange.promotion.service.course.CourseService;
|
||||
import com.greenorange.promotion.service.file.FileInfoService;
|
||||
import com.greenorange.promotion.service.userInfo.UserInfoService;
|
||||
@ -78,6 +80,9 @@ public class WechatGetQrcodeServiceImpl implements WechatGetQrcodeService {
|
||||
@Resource
|
||||
private CourseService courseService;
|
||||
|
||||
@Resource
|
||||
private CourseQrcodeApplyService courseQrcodeApplyService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取接口调用凭据
|
||||
@ -218,16 +223,17 @@ public class WechatGetQrcodeServiceImpl implements WechatGetQrcodeService {
|
||||
UserInfo userInfo = userInfoMapper.selectById(userId);
|
||||
String invitationCode = userInfo.getInvitationCode();
|
||||
// 获取课程信息
|
||||
Long id = commonRequest.getId();
|
||||
Course course = courseService.getById(id);
|
||||
Long courseId = commonRequest.getId();
|
||||
Course course = courseService.getById(courseId);
|
||||
String courseTitle = course.getName();
|
||||
String originalPrice = String.valueOf(course.getOriginPrice());
|
||||
String discountPrice = String.valueOf(course.getDiscountPrice());
|
||||
String discountText = "元券后价";
|
||||
|
||||
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("page", "pages/loginModule/register/register");
|
||||
param.put("scene", "invitationCode=" + invitationCode + "&courseId=" + id);
|
||||
param.put("scene", "invitationCode=" + invitationCode + "&courseId=" + courseId);
|
||||
param.put("width", 430);
|
||||
param.put("check_path", false);
|
||||
param.put("env_version", "develop");
|
||||
@ -239,7 +245,6 @@ public class WechatGetQrcodeServiceImpl implements WechatGetQrcodeService {
|
||||
.execute()
|
||||
.bodyBytes();
|
||||
|
||||
|
||||
String FontType = "Microsoft YaHei UI";
|
||||
int FontStyle = Font.PLAIN;
|
||||
|
||||
@ -331,7 +336,16 @@ public class WechatGetQrcodeServiceImpl implements WechatGetQrcodeService {
|
||||
.hashValue(hashValue)
|
||||
.build();
|
||||
fileInfoService.save(fileInfo);
|
||||
return biz + "-" + view;
|
||||
|
||||
String viewValue = biz + "-" + view;
|
||||
// 保存课程推广码申请记录
|
||||
CourseQrcodeApply courseQrcodeApply = CourseQrcodeApply.builder()
|
||||
.userId(userId)
|
||||
.courseId(courseId)
|
||||
.courseQrcode(viewValue)
|
||||
.build();
|
||||
courseQrcodeApplyService.save(courseQrcodeApply);
|
||||
return viewValue;
|
||||
}
|
||||
|
||||
|
||||
|
20
src/main/resources/mapper/CourseQrcodeApplyMapper.xml
Normal file
20
src/main/resources/mapper/CourseQrcodeApplyMapper.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.greenorange.promotion.mapper.CourseQrcodeApplyMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.greenorange.promotion.model.entity.CourseQrcodeApply">
|
||||
<id property="id" column="id" jdbcType="BIGINT"/>
|
||||
<result property="userId" column="userId" jdbcType="BIGINT"/>
|
||||
<result property="courseId" column="courseId" jdbcType="BIGINT"/>
|
||||
<result property="isDelete" column="isDelete" jdbcType="TINYINT"/>
|
||||
<result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,userId,courseId,
|
||||
isDelete,createTime,updateTime
|
||||
</sql>
|
||||
</mapper>
|
Reference in New Issue
Block a user