|
|
@ -9,15 +9,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
|
import com.zh.project0512.annotation.AdminCheckAuthorityAnnotation;
|
|
|
|
import com.zh.project0512.annotation.AdminCheckAuthorityAnnotation;
|
|
|
|
import com.zh.project0512.annotation.AdminTokenValid;
|
|
|
|
import com.zh.project0512.annotation.AdminTokenValid;
|
|
|
|
|
|
|
|
import com.zh.project0512.mapper.UserMapper;
|
|
|
|
import com.zh.project0512.model.*;
|
|
|
|
import com.zh.project0512.model.*;
|
|
|
|
import com.zh.project0512.model.validatedDemo.TaskValidGroup1;
|
|
|
|
import com.zh.project0512.model.validatedDemo.TaskValidGroup1;
|
|
|
|
import com.zh.project0512.model.validatedDemo.TaskValidGroup2;
|
|
|
|
import com.zh.project0512.model.validatedDemo.TaskValidGroup2;
|
|
|
|
import com.zh.project0512.model.vo.FileUploadParamVo;
|
|
|
|
import com.zh.project0512.model.vo.FileUploadParamVo;
|
|
|
|
import com.zh.project0512.service.*;
|
|
|
|
import com.zh.project0512.service.*;
|
|
|
|
import com.zh.project0512.utils.CustomUtil;
|
|
|
|
import com.zh.project0512.utils.*;
|
|
|
|
import com.zh.project0512.utils.ExcelUtil;
|
|
|
|
|
|
|
|
import com.zh.project0512.utils.FileTypeUtil;
|
|
|
|
|
|
|
|
import com.zh.project0512.utils.MybatisPlusUtil;
|
|
|
|
|
|
|
|
import com.zh.project0512.utils.result.HttpStatusEnum;
|
|
|
|
import com.zh.project0512.utils.result.HttpStatusEnum;
|
|
|
|
import com.zh.project0512.utils.result.Result;
|
|
|
|
import com.zh.project0512.utils.result.Result;
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
@ -36,8 +34,10 @@ import javax.validation.constraints.NotNull;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
@ -427,6 +427,68 @@ public class TaskController {
|
|
|
|
return Result.success("", "终止任务完成");
|
|
|
|
return Result.success("", "终止任务完成");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private UserMapper userMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IUserPointsRecordsService userPointsRecordsService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private HttpUtil httpUtil;
|
|
|
|
|
|
|
|
@PostMapping("/finish")
|
|
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
|
|
public Result test(@Validated @RequestBody DelTaskParam param) {
|
|
|
|
|
|
|
|
// 任务结束7天时,自动结算积分
|
|
|
|
|
|
|
|
QueryWrapper<Task> qw = new QueryWrapper<>();
|
|
|
|
|
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
|
|
|
LocalDateTime weekAgo = now.minusWeeks(0);
|
|
|
|
|
|
|
|
AppMessage appMessage = new AppMessage().setTitle("任务积分结算");
|
|
|
|
|
|
|
|
String format = weekAgo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
|
|
|
|
qw.eq("status",2).eq("id", param.getId());
|
|
|
|
|
|
|
|
List<Task> taskList = taskService.list(qw);
|
|
|
|
|
|
|
|
String qywxAccessToken = httpUtil.qywxGetToken();
|
|
|
|
|
|
|
|
// 处理每个任务的传播值
|
|
|
|
|
|
|
|
for (Task t : taskList) {
|
|
|
|
|
|
|
|
Integer taskId = t.getId();
|
|
|
|
|
|
|
|
List<Map> videoEffectResult = videoService.videoEffectResult(taskId);
|
|
|
|
|
|
|
|
List<Map> rewardRule = rewardRuleService.listByTemplateId(t.getRewardRuleTemplateId());
|
|
|
|
|
|
|
|
List<UserPointsRecords> recordsList = new ArrayList<>();
|
|
|
|
|
|
|
|
// 处理任务中每个用户的传播值
|
|
|
|
|
|
|
|
for (Map m : videoEffectResult) {
|
|
|
|
|
|
|
|
BigDecimal bigDecimal = (BigDecimal) m.get("effectResultSum");
|
|
|
|
|
|
|
|
Integer effectResultSum = Integer.parseInt(bigDecimal.toString());
|
|
|
|
|
|
|
|
if (effectResultSum != null && effectResultSum != 0) {
|
|
|
|
|
|
|
|
int point = 0;
|
|
|
|
|
|
|
|
int userId = (Integer) m.get("userId");
|
|
|
|
|
|
|
|
String touser = (String) m.get("touser");
|
|
|
|
|
|
|
|
// 根据传播值计算规则算出奖励
|
|
|
|
|
|
|
|
for (Map r : rewardRule) {
|
|
|
|
|
|
|
|
if (effectResultSum > (Integer) r.get("limitNum")) {
|
|
|
|
|
|
|
|
point = (Integer) r.get("reward");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// (视频结算标识)并更新用户积分,发送企业消息和小程序内消息
|
|
|
|
|
|
|
|
userMapper.updPoints(userId, point);
|
|
|
|
|
|
|
|
appMessage.setDescription("恭喜您获得星途积分" + point + "。")
|
|
|
|
|
|
|
|
.setUrl("pages/quest/subpage/detail/detail?id=" + taskId)
|
|
|
|
|
|
|
|
.setReceiverId(userId);
|
|
|
|
|
|
|
|
// 企业微信消息通知
|
|
|
|
|
|
|
|
if (touser != null) {
|
|
|
|
|
|
|
|
appMessage.setTouser(touser);
|
|
|
|
|
|
|
|
List<JSONObject> content_item = new ArrayList<>();
|
|
|
|
|
|
|
|
content_item.add(new JSONObject().fluentPut("key", "到账结果").fluentPut("value", appMessage.getDescription()));
|
|
|
|
|
|
|
|
content_item.add(new JSONObject().fluentPut("key", "到账时间").fluentPut("value", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
|
|
|
|
|
|
|
|
httpUtil.qywxMessage(qywxAccessToken, touser, "任务积分结算", null, appMessage.getUrl(), content_item);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
AppMessageUtil.sendMessage(appMessage);
|
|
|
|
|
|
|
|
recordsList.add(new UserPointsRecords().setSettlementMethod(1).setPoints(point).setType(1).setRemarks("任务完成结算:"+t.getTitle()).setCreateDate(now).setUserId(userId));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 按任务生成积分流水记录
|
|
|
|
|
|
|
|
userPointsRecordsService.saveBatch(recordsList);
|
|
|
|
|
|
|
|
taskService.update(new UpdateWrapper<Task>().eq("id",taskId).set("status",3));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Result.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Data
|
|
|
|
@Data
|
|
|
|
static class ListTParam {
|
|
|
|
static class ListTParam {
|
|
|
|
private int pageNum;
|
|
|
|
private int pageNum;
|
|
|
|