|
@@ -1,18 +1,23 @@
|
|
|
package com.fs.course.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.fs.common.BeanCopyUtils;
|
|
|
import com.fs.common.core.domain.R;
|
|
|
import com.fs.common.core.domain.ResponseResult;
|
|
|
import com.fs.common.core.redis.RedisCache;
|
|
|
+import com.fs.common.exception.CustomException;
|
|
|
import com.fs.common.utils.DateUtils;
|
|
|
import com.fs.common.utils.StringUtils;
|
|
|
import com.fs.common.utils.date.DateUtil;
|
|
|
+import com.fs.company.domain.Company;
|
|
|
import com.fs.company.domain.CompanyUser;
|
|
|
+import com.fs.company.mapper.CompanyMapper;
|
|
|
import com.fs.company.mapper.CompanyUserMapper;
|
|
|
import com.fs.course.config.CourseConfig;
|
|
|
import com.fs.course.domain.*;
|
|
@@ -29,11 +34,13 @@ import com.fs.course.vo.FsUserCourseVideoVO;
|
|
|
import com.fs.course.vo.newfs.*;
|
|
|
import com.fs.his.domain.FsUser;
|
|
|
import com.fs.his.domain.FsUserIntegralLogs;
|
|
|
+import com.fs.his.domain.FsUserWx;
|
|
|
import com.fs.his.mapper.FsUserIntegralLogsMapper;
|
|
|
import com.fs.his.mapper.FsUserMapper;
|
|
|
import com.fs.his.param.WxSendRedPacketParam;
|
|
|
import com.fs.his.service.IFsStorePaymentService;
|
|
|
import com.fs.his.service.IFsUserService;
|
|
|
+import com.fs.his.service.IFsUserWxService;
|
|
|
import com.fs.his.vo.OptionsVO;
|
|
|
import com.fs.qw.domain.QwCompany;
|
|
|
import com.fs.qw.domain.QwExternalContact;
|
|
@@ -64,7 +71,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.time.LocalTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -172,6 +178,10 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
|
private IQwExternalContactService qwExternalContactService;
|
|
|
@Autowired
|
|
|
private IQwCompanyService iQwCompanyService;
|
|
|
+ @Autowired
|
|
|
+ private CompanyMapper companyMapper;
|
|
|
+ @Autowired
|
|
|
+ private IFsUserWxService fsUserWxService;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -841,11 +851,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
|
|
|
|
// 准备发送红包参数
|
|
|
WxSendRedPacketParam packetParam = new WxSendRedPacketParam();
|
|
|
- packetParam.setOpenId(user.getMpOpenId());
|
|
|
- // 来源是小程序切换openId
|
|
|
- if (param.getSource() == 2) {
|
|
|
- packetParam.setOpenId(user.getCourseMaOpenId());
|
|
|
- }
|
|
|
+ packetParam.setOpenId(getOpenId(user.getUserId(), param.getCompanyId(), param.getSource()));
|
|
|
packetParam.setAmount(amount);
|
|
|
packetParam.setSource(param.getSource());
|
|
|
packetParam.setRedPacketMode(config.getRedPacketMode());
|
|
@@ -890,6 +896,35 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取用户openId
|
|
|
+ *
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @param companyId 公司ID
|
|
|
+ * @param source 来源 1公众号 2小程序
|
|
|
+ * @return openId
|
|
|
+ */
|
|
|
+ private String getOpenId(Long userId, Long companyId, Integer source) {
|
|
|
+ Company company = companyMapper.selectCompanyById(companyId);
|
|
|
+ String appId = source == 1 ? company.getCourseMaAppId() : company.getCourseMiniAppId();
|
|
|
+
|
|
|
+ // 公司配置为空时获取默认配置
|
|
|
+ if (StringUtils.isBlank(appId)) {
|
|
|
+ String json = configService.selectConfigByKey("course.config");
|
|
|
+ CourseConfig config = JSON.parseObject(json, CourseConfig.class);
|
|
|
+ appId = source == 1 ? config.getMpAppId() : config.getMiniprogramAppid();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询openId
|
|
|
+ Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery().eq(FsUserWx::getFsUserId, userId).eq(FsUserWx::getAppId, appId);
|
|
|
+ FsUserWx fsUserWx = fsUserWxService.getOne(queryWrapper);
|
|
|
+ if (Objects.isNull(fsUserWx)) {
|
|
|
+ throw new CustomException("获取openId失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ return fsUserWx.getOpenId();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 发放积分奖励
|
|
|
*
|