Explorar o código

1、把看课模板分离出来单独一个服务,把不相关的代码移除 整合模块

yfh hai 1 día
pai
achega
69a2439037

+ 129 - 0
fs-user-course/src/main/java/com/fs/course/controller/CourseWxH5Controller.java

@@ -0,0 +1,129 @@
+//package com.fs.course.controller;
+//
+//
+//import com.fs.course.annotation.Login;
+//import com.fs.common.annotation.RepeatSubmit;
+//import com.fs.common.core.domain.R;
+//import com.fs.common.core.domain.ResponseResult;
+//import com.fs.course.param.FsCourseQuestionAnswerUParam;
+//import com.fs.course.param.FsCourseSendRewardUParam;
+//import com.fs.course.param.FsUserCourseVideoFinishUParam;
+//import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
+//import com.fs.course.param.newfs.FsUserCourseVideoLinkParam;
+//import com.fs.course.param.newfs.FsUserCourseVideoUParam;
+//import com.fs.course.service.*;
+//import com.fs.course.vo.FsUserCourseVideoH5VO;
+//import com.fs.course.vo.newfs.FsUserCourseVideoLinkDetailsVO;
+//import com.fs.his.service.IFsUserService;
+//import com.fs.system.service.ISysConfigService;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.*;
+//
+//import javax.validation.Valid;
+//
+//@Api("会员-h5看课接口")
+//@RestController
+//@RequestMapping(value = "/app/course/wx/h5")
+//public class CourseWxH5Controller extends AppBaseController {
+//    Logger logger = LoggerFactory.getLogger(getClass());
+//    @Autowired
+//    private IFsUserCourseService courseService;
+//
+//    @Autowired
+//    private IFsUserCourseVideoService courseVideoService;
+//
+//    @Autowired
+//    private IFsCourseLinkService courseLinkService;
+//
+//    @Autowired
+//    private IFsCourseWatchLogService courseWatchLogService;
+//
+//    @Autowired
+//    private IFsCourseQuestionBankService questionBankService;
+//
+//    @Autowired
+//    private IFsUserService fsUserService;
+//
+//
+//    @Login
+//    @ApiOperation("判断是否添加客服(是否关联销售)")
+//    @PostMapping("/isAddKf")
+//    public ResponseResult<Boolean> isAddCompanyUser(@Valid @RequestBody FsUserCourseAddCompanyUserParam param) {
+//        Long userId = Long.parseLong(getUserId());
+//        param.setUserId(userId);
+//        return courseVideoService.isAddCompanyUser(param);
+//    }
+//
+//    @ApiOperation("h5课程简介")
+//    @GetMapping("/getH5CourseByVideoId")
+//    public R getCourseByVideoId(@RequestParam("videoId") Long videoId)
+//    {
+//        FsUserCourseVideoH5VO course = courseService.selectFsUserCourseVideoH5VOByVideoId(videoId);
+//        return R.ok().put("data",course);
+//    }
+//
+//    @Login
+//    @ApiOperation("H5课程详情")
+//    @GetMapping("/videoDetails")
+//    public ResponseResult<FsUserCourseVideoLinkDetailsVO> getCourseVideoDetails(FsUserCourseVideoLinkParam param) {
+//        param.setFsUserId(Long.parseLong(getUserId()));
+//        return courseVideoService.getLinkCourseVideoDetails(param);
+//    }
+//
+//    @ApiOperation("获取真实链接")
+//    @GetMapping("/getRealLink")
+//    public R getRealLink(@RequestParam("sortLink")String link)
+//    {
+//        return courseLinkService.getRealLinkH5(link);
+//    }
+//
+//    @ApiOperation("更新看课时长")
+//    @PostMapping("/updateWatchDuration")
+//    public R updateWatchDuration(@RequestBody FsUserCourseVideoUParam param)
+//    {
+//        param.setUserId(Long.parseLong(getUserId()));
+//        return courseVideoService.updateWatchDurationWx(param);
+//    }
+//
+//
+//    @ApiOperation("获取缓冲流量")
+//    @PostMapping("/getInternetTraffic")
+//    public R getInternetTraffic(@RequestBody FsUserCourseVideoFinishUParam param) {
+//        param.setUserId(Long.parseLong(getUserId()));
+//        return courseVideoService.getInternetTraffic(param);
+//    }
+//
+//
+//    @ApiOperation("答题")
+//    @PostMapping("/courseAnswer")
+//    public R courseAnswer(@RequestBody FsCourseQuestionAnswerUParam param){
+//        param.setUserId(Long.parseLong(getUserId()));
+//        logger.info("zyp \n【答题】:{}",param.getQuestions());
+//        if (param.getDuration()==null){
+//            logger.info("zyp \n【未识别到时长】:{}",param.getUserId());
+//        }
+//        return questionBankService.courseAnswer(param, true);
+//    }
+//
+//    @ApiOperation("发放奖励")
+//    @PostMapping("/sendReward")
+//    @RepeatSubmit
+//    public R sendReward(@RequestBody FsCourseSendRewardUParam param)
+//    {
+//        param.setUserId(Long.parseLong(getUserId()));
+//        logger.info("zyp \n【发放奖励】:{}",param);
+//        return courseVideoService.sendRewardByFsUser(param);
+//    }
+//
+//
+//    @PostMapping("/getErrMsg")
+//    public void getErrMsg(@RequestParam("msg") String msg) {
+//        logger.error("zyp \n【h5看课中途报错】:{}",msg);
+//    }
+//
+//
+//}

+ 202 - 0
fs-user-course/src/main/java/com/fs/course/controller/WxCompanyUserController.java

@@ -0,0 +1,202 @@
+//package com.fs.course.controller;
+//
+//import cn.binarywang.wx.miniapp.api.WxMaService;
+//import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+//import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
+//import cn.hutool.core.date.DateTime;
+//import com.alibaba.fastjson.JSON;
+//import com.fs.course.utils.JwtUtils;
+//import com.fs.common.core.domain.R;
+//import com.fs.common.core.redis.RedisCache;
+//import com.fs.common.param.LoginMaWxParam;
+//import com.fs.common.utils.IpUtil;
+//import com.fs.common.utils.ServletUtils;
+//import com.fs.company.domain.Company;
+//import com.fs.company.domain.CompanyUser;
+//import com.fs.company.service.ICompanyDeptService;
+//import com.fs.company.service.ICompanyService;
+//import com.fs.company.service.ICompanyUserService;
+//import com.fs.core.config.WxMaConfiguration;
+//import com.fs.course.config.CourseMaConfig;
+//import com.fs.his.domain.FsUser;
+//import com.fs.his.service.IFsUserService;
+//
+//import com.fs.system.domain.SysConfig;
+//import com.fs.system.mapper.SysConfigMapper;
+//import com.fs.wx.miniapp.config.WxMaProperties;
+//import io.jsonwebtoken.Claims;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import lombok.extern.slf4j.Slf4j;
+//import me.chanjar.weixin.common.error.WxErrorException;
+//import org.apache.commons.lang3.StringUtils;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import java.util.Date;
+//import java.util.List;
+//
+//@Api("微信小程序相关接口")
+//@RestController
+//@RequestMapping(value = "/app/wx/miniapp")
+//@Slf4j
+//public class WxCompanyUserController extends AppBaseController {
+//    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+//
+//    @Autowired
+//    private WxMaProperties maProperties;
+//
+//    @Autowired
+//    JwtUtils jwtUtils;
+//
+//    @Autowired
+//    RedisCache redisCache;
+//
+//    @Autowired
+//    private ICompanyUserService companyUserService;
+//
+//    @Autowired
+//    private ICompanyDeptService companyDeptService;
+//
+//    @Autowired
+//    private IFsUserService userService;
+//
+//    @Autowired
+//    ICompanyService companyService;
+//
+//    @Autowired
+//    private SysConfigMapper sysConfigMapper;
+//
+//    @ApiOperation("小程序-授权登录")
+//    @PostMapping("/loginByMa")
+//    public R login(@RequestBody LoginMaWxParam param) {
+//        log.info("=====================进入小程序授权登录, 入参: {}", param);
+//        if (StringUtils.isBlank(param.getCode())) {
+//            return R.error("code不存在");
+//        }
+//        SysConfig sysConfig3 = sysConfigMapper.selectConfigByConfigKey("courseMa.config");
+//        List<CourseMaConfig> courseMaConfigs = JSON.parseArray(sysConfig3.getConfigValue(), CourseMaConfig.class);
+//        if (courseMaConfigs.isEmpty()){
+//            return R.error("小程序配置为空");
+//        }
+//        CourseMaConfig courseMaConfig = courseMaConfigs.get(0);
+//        //获取第二个小程序配置,序号从0开始
+//        final WxMaService wxService = WxMaConfiguration.getMaService(courseMaConfig.getAppid());
+//        try {
+//            WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
+//            this.logger.info(session.getSessionKey());
+//            this.logger.info(session.getOpenid());
+//            this.logger.info(session.getUnionid());
+//            // 解密
+//            WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
+//            FsUser user = userService.selectFsUserByPhone(phoneNoInfo.getPhoneNumber());
+//
+//            // 特殊(需求设计:需要根据公司是否开启黑名单来设置会员初始化的状态)
+//            Company company = null;
+//            if(param.getCompanyId() != null){
+//                company = companyService.selectCompanyById(param.getCompanyId());
+//            }
+//
+//            // 根据销售后台设置的  是否需要单独注册会员 来判断是否需要设置销售的值
+//            CompanyUser companyUser = null;
+//            if(param.getCompanyUserId() != null){
+//                companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
+//            }
+//
+//            String ip = IpUtil.getRequestIp();
+//            if (user == null) {
+//                if(StringUtils.isNotEmpty(session.getUnionid())){
+//                    user = userService.selectFsUserByUnionId(session.getUnionid());
+//                } else {
+//                    user = userService.selectFsUserByCourseMaOpenId(session.getOpenid());
+//                }
+//                if (user != null) {
+//                    //修改
+//                    FsUser userMap = new FsUser();
+//                    userMap.setUserId(user.getUserId());
+//                    userMap.setCourseMaOpenId(session.getOpenid());
+//                    userMap.setUnionId(session.getUnionid());
+//                    userMap.setUpdateTime(new DateTime());
+//                    userMap.setNickName(param.getNickname() != null ? param.getNickname() : "微信用户");
+//                    userMap.setAvatar(param.getAvatar() != null ? param.getAvatar() : null);
+//                    userMap.setPhone(phoneNoInfo.getPhoneNumber());
+//                    // 逻辑调整:如果会员已经绑定了销售,直接提示,不让注册-2025年6月16日14点53分
+//                    if (user.getCompanyUserId() != null && !param.getCompanyUserId().equals(user.getCompanyUserId())){
+//                        return R.error(406, "该用户已成为其他销售会员");
+//                    }
+//                    if(companyUser != null && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1){
+//                        user.setCompanyId(param.getCompanyId());
+//                        user.setCompanyUserId(param.getCompanyUserId());
+//                    }
+//                    userService.updateFsUser(userMap);
+//                } else {
+//                    //新增
+//                    user = new FsUser();
+//                    user.setNickName(param.getNickname() != null ? param.getNickname() : "微信用户");
+//                    user.setAvatar(param.getAvatar() != null ? param.getAvatar() : null);
+//                    user.setStatus((company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1);
+//                    user.setCourseMaOpenId(session.getOpenid());
+//                    user.setUnionId(session.getUnionid());
+//                    user.setCreateTime(new Date());
+//                    user.setPhone(phoneNoInfo.getPhoneNumber());
+//                    if(companyUser != null && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1){
+//                        user.setCompanyId(param.getCompanyId());
+//                        user.setCompanyUserId(param.getCompanyUserId());
+//                    }
+//                    userService.insertFsUser(user);
+//                }
+//            } else {
+//                FsUser userMap = new FsUser();
+//                userMap.setUserId(user.getUserId());
+//                userMap.setUpdateTime(new DateTime());
+//                userMap.setPhone(phoneNoInfo.getPhoneNumber());
+//                userMap.setLastIp(ip);
+//                if (StringUtils.isNotEmpty(session.getUnionid())) {
+//                    userMap.setUnionId(session.getUnionid());
+//                }
+//                userService.updateFsUser(userMap);
+//            }
+//            log.info("保存成功的用户信息user: {}, 用户id: {}", user, user.getUserId());
+//            String token = jwtUtils.generateToken(user.getUserId());
+//            // 返回一个写死的数据到前端
+//            return R.ok("登录成功").put("token", token).put("phoneNumber", phoneNoInfo.getPhoneNumber()).put("nickName", "微信用户").put("user", user);
+//        } catch (WxErrorException e) {
+//            this.logger.error(e.getMessage(), e);
+//            return R.error("授权失败," + e.getMessage());
+//        }
+//    }
+//
+////    @Login(isMiniLogin = true)
+////    @ApiOperation("获取销售通过小程序登录后的用户信息")
+////    @GetMapping("/getMaUser")
+////    public R getUserInfo() {
+////        try {
+////            CompanyUser companyUser = companyUserService.selectCompanyUserById(Long.parseLong(getUserId()));
+////            if (companyUser == null) {
+////                return R.error(401, "用户信息不存在");
+////            }
+////            return R.ok().put("user", companyUser);
+////        } catch (Exception e) {
+////            return R.error("操作异常");
+////        }
+////    }
+//
+//    /**
+//     * 特殊要求:销售小程序临时登录,登录后页面中还有一个之前常用的登录,所以为了区分,token名称不能跟之前的一样
+//     *
+//     * @return 用户id
+//     */
+//    public String getUserId() {
+//        String headValue = ServletUtils.getRequest().getHeader("UserToken");
+//        Claims claims = jwtUtils.getClaimByToken(headValue);
+//        String userId = claims.getSubject().toString();
+//        return userId;
+//    }
+//
+//
+//}