Commit 59ae5ada authored by liuyang's avatar liuyang

update

parent f8c06074
...@@ -18,6 +18,7 @@ import com.qkdata.biz.web.vo.QueryConsumeRecordModel; ...@@ -18,6 +18,7 @@ import com.qkdata.biz.web.vo.QueryConsumeRecordModel;
import com.qkdata.biz.web.vo.SaveConsumeRecord; import com.qkdata.biz.web.vo.SaveConsumeRecord;
import com.qkdata.common.base.enums.CodeEnum; import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.model.PageResult; import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.util.UserContext;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
...@@ -115,4 +116,5 @@ public class CourseConsumeRecordService extends ServiceImpl<CourseConsumeRecordM ...@@ -115,4 +116,5 @@ public class CourseConsumeRecordService extends ServiceImpl<CourseConsumeRecordM
} }
return PageResult.<CourseConsumeRecordModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build(); return PageResult.<CourseConsumeRecordModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
} }
} }
\ No newline at end of file
...@@ -17,6 +17,7 @@ import com.qkdata.common.base.model.PageResult; ...@@ -17,6 +17,7 @@ import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.util.UserContext; import com.qkdata.common.util.UserContext;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
...@@ -46,6 +47,7 @@ public class OrgUserReceiveRecordService extends ServiceImpl<OrgUserReceiveRecor ...@@ -46,6 +47,7 @@ public class OrgUserReceiveRecordService extends ServiceImpl<OrgUserReceiveRecor
* 企业分配VIP * 企业分配VIP
* @param models * @param models
*/ */
@Transactional
public void assignVip(List<EnterpriseAssignVipModel> models) { public void assignVip(List<EnterpriseAssignVipModel> models) {
Long orgId = sysUserService.getUserEnterpriesId(UserContext.getUserId()); Long orgId = sysUserService.getUserEnterpriesId(UserContext.getUserId());
List<OrgUserReceiveRecordPO> poList = Lists.newArrayList(); List<OrgUserReceiveRecordPO> poList = Lists.newArrayList();
...@@ -59,6 +61,7 @@ public class OrgUserReceiveRecordService extends ServiceImpl<OrgUserReceiveRecor ...@@ -59,6 +61,7 @@ public class OrgUserReceiveRecordService extends ServiceImpl<OrgUserReceiveRecor
poList.add(po); poList.add(po);
} }
saveBatch(poList); saveBatch(poList);
validateAndSave(poList);
} }
public synchronized void validateAndSave(List<OrgUserReceiveRecordPO> poList){ public synchronized void validateAndSave(List<OrgUserReceiveRecordPO> poList){
for (OrgUserReceiveRecordPO po : poList){ for (OrgUserReceiveRecordPO po : poList){
......
package com.qkdata.biz.web.controller; package com.qkdata.biz.web.controller;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;
import com.qkdata.biz.common.BizConstants; import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.management.entity.CourseConsumeRecordPO; import com.qkdata.biz.management.entity.CourseConsumeRecordPO;
import com.qkdata.biz.management.service.CourseConsumeRecordService;
import com.qkdata.biz.web.vo.SaveConsumeRecord; import com.qkdata.biz.web.vo.SaveConsumeRecord;
import com.qkdata.common.annotation.SysLog; import com.qkdata.common.annotation.SysLog;
import com.qkdata.common.base.model.Result; import com.qkdata.common.base.model.Result;
...@@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.sql.Struct;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -28,12 +32,17 @@ public class CourseConsumeRecordController { ...@@ -28,12 +32,17 @@ public class CourseConsumeRecordController {
@Autowired @Autowired
@Qualifier("objectRedisTemplate") @Qualifier("objectRedisTemplate")
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired
private CourseConsumeRecordService recordService;
@ApiOperation("记录课程消耗记录") @ApiOperation("记录课程消耗记录")
@PostMapping("/save") @PostMapping("/save")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR) @RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("记录课程消耗记录") @SysLog("记录课程消耗记录")
public Result<String> save(@RequestBody SaveConsumeRecord model){ public Result<String> save(@RequestBody SaveConsumeRecord model){
if (StrUtil.isBlank(model.getUuid())){
return Result.succeed("ok");
}
//缓存用户观看记录 //缓存用户观看记录
redisTemplate.opsForValue().set("record_"+UserContext.getUserId()+"_"+model.getCourseId(),model, 5,TimeUnit.MINUTES); redisTemplate.opsForValue().set("record_"+UserContext.getUserId()+"_"+model.getCourseId(),model, 5,TimeUnit.MINUTES);
//缓存课程观看记录 //缓存课程观看记录
...@@ -42,7 +51,13 @@ public class CourseConsumeRecordController { ...@@ -42,7 +51,13 @@ public class CourseConsumeRecordController {
cacheModel.setWatchTime(model.getLearnDuration()); cacheModel.setWatchTime(model.getLearnDuration());
cacheModel.setVideoTime(model.getVideoDuration()); cacheModel.setVideoTime(model.getVideoDuration());
cacheModel.setUpdateTime(LocalDateTime.now()); cacheModel.setUpdateTime(LocalDateTime.now());
redisTemplate.opsForHash().put(BizConstants.CACHE_KE_CONSUME_RECORD,cacheModel.getId(),cacheModel); if (StrUtil.isNotBlank(model.getEvent()) && "flush".equals(model.getEvent())){
recordService.saveOrUpdateBatch(Lists.newArrayList(cacheModel));
redisTemplate.opsForHash().delete(BizConstants.CACHE_KE_CONSUME_RECORD,model.getUuid());
}else {
redisTemplate.opsForHash().put(BizConstants.CACHE_KE_CONSUME_RECORD,cacheModel.getId(),cacheModel);
}
}else { }else {
CourseConsumeRecordPO po = new CourseConsumeRecordPO(); CourseConsumeRecordPO po = new CourseConsumeRecordPO();
po.setId(model.getUuid()); po.setId(model.getUuid());
...@@ -53,10 +68,15 @@ public class CourseConsumeRecordController { ...@@ -53,10 +68,15 @@ public class CourseConsumeRecordController {
po.setVideoTime(model.getVideoDuration()); po.setVideoTime(model.getVideoDuration());
po.setCreateTime(model.getStartTime()); po.setCreateTime(model.getStartTime());
po.setUpdateTime(model.getStartTime()); po.setUpdateTime(model.getStartTime());
redisTemplate.opsForHash().put(BizConstants.CACHE_KE_CONSUME_RECORD,po.getId(),po); if (StrUtil.isNotBlank(model.getEvent()) && "flush".equals(model.getEvent())){
recordService.saveOrUpdateBatch(Lists.newArrayList(po));
}else {
redisTemplate.opsForHash().put(BizConstants.CACHE_KE_CONSUME_RECORD, po.getId(), po);
}
} }
return Result.succeed("ok"); return Result.succeed("ok");
} }
} }
...@@ -85,8 +85,10 @@ public class FrontendProductOrderController { ...@@ -85,8 +85,10 @@ public class FrontendProductOrderController {
if (StrUtil.isBlank(model.getOrderNo())){ if (StrUtil.isBlank(model.getOrderNo())){
throw new BusinessException("请求错误,订单号不能为空"); throw new BusinessException("请求错误,订单号不能为空");
} }
if (StrUtil.isBlank(model.getOpenId())){ if (model.getPayMethod() == PayMethodEnum.WeiXin && model.getSource() == PaySourceEnum.JSAPI){
throw new BusinessException("请求错误,openId不能为空"); if (StrUtil.isBlank(model.getOpenId())){
throw new BusinessException("请求错误,openId不能为空");
}
} }
if (model.getSource() == null){ if (model.getSource() == null){
throw new BusinessException("请求错误,source不能为空"); throw new BusinessException("请求错误,source不能为空");
......
...@@ -33,4 +33,8 @@ public class SaveConsumeRecord { ...@@ -33,4 +33,8 @@ public class SaveConsumeRecord {
* 开始观看时间 * 开始观看时间
*/ */
private LocalDateTime startTime; private LocalDateTime startTime;
/**
* 事件名
*/
private String event;
} }
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