From 3d8fd5591e0f2bfb39517ad1f4c5d8c5d60362fd Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Tue, 24 Jun 2025 22:34:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=9A=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=AB=AF=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E5=BD=93=E5=89=8D=E8=AF=BE=E7=A8=8B=E6=8E=A8?= =?UTF-8?q?=E5=B9=BF=E7=A0=81=20=E4=BF=AE=E6=94=B9=E7=9A=84bug:=20Web?= =?UTF-8?q?=E7=AB=AF=E7=AE=A1=E7=90=86=E5=91=98=E6=A0=B9=E6=8D=AE=E8=AF=BE?= =?UTF-8?q?=E7=A8=8Bid=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=AB=A0=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/course/CourseController.java | 26 ++++++++ .../mapper/CourseQrcodeApplyMapper.java | 18 ++++++ .../model/entity/CourseQrcodeApply.java | 63 +++++++++++++++++++ .../course/CourseQrcodeApplyService.java | 13 ++++ .../impl/CourseQrcodeApplyServiceImpl.java | 22 +++++++ .../impl/WechatGetQrcodeServiceImpl.java | 24 +++++-- .../mapper/CourseQrcodeApplyMapper.xml | 20 ++++++ 7 files changed, 181 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/greenorange/promotion/mapper/CourseQrcodeApplyMapper.java create mode 100644 src/main/java/com/greenorange/promotion/model/entity/CourseQrcodeApply.java create mode 100644 src/main/java/com/greenorange/promotion/service/course/CourseQrcodeApplyService.java create mode 100644 src/main/java/com/greenorange/promotion/service/course/impl/CourseQrcodeApplyServiceImpl.java create mode 100644 src/main/resources/mapper/CourseQrcodeApplyMapper.xml diff --git a/src/main/java/com/greenorange/promotion/controller/course/CourseController.java b/src/main/java/com/greenorange/promotion/controller/course/CourseController.java index e2f5407..aaf07ca 100644 --- a/src/main/java/com/greenorange/promotion/controller/course/CourseController.java +++ b/src/main/java/com/greenorange/promotion/controller/course/CourseController.java @@ -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 verifyIsApplyCourseQrcode(@Valid @RequestBody CommonRequest commonRequest, HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + Long courseId = commonRequest.getId(); + LambdaQueryWrapper 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()); + } + + + diff --git a/src/main/java/com/greenorange/promotion/mapper/CourseQrcodeApplyMapper.java b/src/main/java/com/greenorange/promotion/mapper/CourseQrcodeApplyMapper.java new file mode 100644 index 0000000..3a02be7 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/mapper/CourseQrcodeApplyMapper.java @@ -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 { + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/model/entity/CourseQrcodeApply.java b/src/main/java/com/greenorange/promotion/model/entity/CourseQrcodeApply.java new file mode 100644 index 0000000..0380777 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/entity/CourseQrcodeApply.java @@ -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; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/service/course/CourseQrcodeApplyService.java b/src/main/java/com/greenorange/promotion/service/course/CourseQrcodeApplyService.java new file mode 100644 index 0000000..75bde3f --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/course/CourseQrcodeApplyService.java @@ -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 { + +} diff --git a/src/main/java/com/greenorange/promotion/service/course/impl/CourseQrcodeApplyServiceImpl.java b/src/main/java/com/greenorange/promotion/service/course/impl/CourseQrcodeApplyServiceImpl.java new file mode 100644 index 0000000..d2e8833 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/course/impl/CourseQrcodeApplyServiceImpl.java @@ -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 + implements CourseQrcodeApplyService{ + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java index 126aca7..37f7c49 100644 --- a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java @@ -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 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; } diff --git a/src/main/resources/mapper/CourseQrcodeApplyMapper.xml b/src/main/resources/mapper/CourseQrcodeApplyMapper.xml new file mode 100644 index 0000000..34351cb --- /dev/null +++ b/src/main/resources/mapper/CourseQrcodeApplyMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,userId,courseId, + isDelete,createTime,updateTime + +