From 50b8ff4783cebba89ddf249e189894ecbe9b275d Mon Sep 17 00:00:00 2001 From: zhangjinli Date: Mon, 4 Jul 2022 11:55:38 +0800 Subject: [PATCH] zh --- .../controller/ScheduleController.java | 37 +++++-- .../manage/ReferenceController.java | 13 +-- .../manage/UserAccountController.java | 49 +++++++-- .../controller/manage/UserController.java | 28 ++++++ .../controller/manage/VideoController.java | 99 +++++++++++++++---- .../project0512/mapper/ReferenceMapper.java | 4 +- .../mapper/UserEffectRecordsMapper.java | 2 +- .../zh/project0512/mapper/VideoMapper.java | 2 +- .../com/zh/project0512/model/Reference.java | 7 ++ .../project0512/model/UserPointsRecords.java | 12 ++- src/main/resources/mapper/ReferenceMapper.xml | 4 +- 11 files changed, 203 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/zh/project0512/controller/ScheduleController.java b/src/main/java/com/zh/project0512/controller/ScheduleController.java index ceee99c..d7f6890 100644 --- a/src/main/java/com/zh/project0512/controller/ScheduleController.java +++ b/src/main/java/com/zh/project0512/controller/ScheduleController.java @@ -1,21 +1,21 @@ package com.zh.project0512.controller; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.zh.project0512.mapper.QywxDepartmentUserLinkMapper; import com.zh.project0512.mapper.RankMapper; import com.zh.project0512.mapper.UserMapper; -import com.zh.project0512.model.Rank; -import com.zh.project0512.model.Task; -import com.zh.project0512.model.UserPointsRecords; -import com.zh.project0512.model.Video; +import com.zh.project0512.model.*; import com.zh.project0512.model.dto.RankListDTO; import com.zh.project0512.model.vo.RankListVo; import com.zh.project0512.service.IRewardRuleService; import com.zh.project0512.service.ITaskService; import com.zh.project0512.service.IUserPointsRecordsService; import com.zh.project0512.service.IVideoService; +import com.zh.project0512.utils.AppMessageUtil; +import com.zh.project0512.utils.HttpUtil; import com.zh.project0512.utils.PropertyUtils; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; @@ -47,12 +47,14 @@ public class ScheduleController { private IRewardRuleService rewardRuleService; @Autowired private IUserPointsRecordsService userPointsRecordsService; + @Autowired + private HttpUtil httpUtil; @Scheduled(cron = "0 0 0 * * ?") public void taskBegin() { UpdateWrapper ew = new UpdateWrapper<>(); LocalDateTime now = LocalDateTime.now(); - ew.eq("status",0).eq("date_format(start, '%Y-%m-%d')", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) - .set("status",1).set("updateAt",now); + ew.eq("status", 0).eq("date_format(start, '%Y-%m-%d')", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + .set("status", 1).set("updateAt", now); taskService.update(ew); } @@ -62,8 +64,8 @@ public class ScheduleController { UpdateWrapper ew = new UpdateWrapper<>(); LocalDateTime now = LocalDateTime.now(); String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - ew.eq("status",1).eq("date_format(end, '%Y-%m-%d')", format) - .set("status",2).set("updateAt",LocalDateTime.now()); + ew.eq("status", 1).eq("date_format(end, '%Y-%m-%d')", format) + .set("status", 2).set("updateAt", LocalDateTime.now()); taskService.update(ew); videoService.updStatusWhenTaskEnd(format); } @@ -76,9 +78,11 @@ public class ScheduleController { QueryWrapper qw = new QueryWrapper<>(); LocalDateTime now = LocalDateTime.now(); LocalDateTime weekAgo = now.minusWeeks(1); + AppMessage appMessage = new AppMessage().setTitle("任务积分结算"); String format = weekAgo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); qw.eq("date_format(end, '%Y-%m-%d')", format); List taskList = taskService.list(qw); + String qywxAccessToken = httpUtil.qywxGetToken(); // 处理每个任务的传播值 for (Task t : taskList) { Integer taskId = t.getId(); @@ -93,15 +97,28 @@ public class ScheduleController { 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); - recordsList.add(new UserPointsRecords().setSettlementMethod(1).setPoints(point).setType(1).setCreateDate(now).setUserId(userId)); + appMessage.setDescription("恭喜您获得星途积分" + point + "。") + .setUrl("pages/quest/subpage/detail/detail?id=" + taskId) + .setReceiverId(userId); + // 企业微信消息通知 + if (touser != null) { + appMessage.setTouser(touser); + List 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)); } } // 按任务生成积分流水记录 diff --git a/src/main/java/com/zh/project0512/controller/manage/ReferenceController.java b/src/main/java/com/zh/project0512/controller/manage/ReferenceController.java index 86fb6b5..3f6323d 100644 --- a/src/main/java/com/zh/project0512/controller/manage/ReferenceController.java +++ b/src/main/java/com/zh/project0512/controller/manage/ReferenceController.java @@ -30,6 +30,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +import java.sql.Ref; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -175,17 +176,17 @@ public class ReferenceController { @Data static class DelRParam { - @NotNull(message = "id不能为空") - @Min(value = 1, message = "id最小值为1") - @Schema(title = "素材id") - private Integer id; + @NotNull(message = "id数组不能为空") + @Schema(title = "素材Id数组") + private List idList; } - @Operation(summary = "删除素材") + @Operation(summary = "删除素材(软删除)") @PostMapping("/del") @AdminTokenValid public Result del(@Validated @RequestBody DelRParam param) { - return MybatisPlusUtil.sqlResult(referenceService.removeById(param.getId()), "删除"); + return MybatisPlusUtil.sqlResult(referenceService.update(new UpdateWrapper().in("id", param.getIdList()).set("isDeleted", 1)), "删除"); + } @Data diff --git a/src/main/java/com/zh/project0512/controller/manage/UserAccountController.java b/src/main/java/com/zh/project0512/controller/manage/UserAccountController.java index caffda6..288ec21 100644 --- a/src/main/java/com/zh/project0512/controller/manage/UserAccountController.java +++ b/src/main/java/com/zh/project0512/controller/manage/UserAccountController.java @@ -1,6 +1,7 @@ package com.zh.project0512.controller.manage; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -12,6 +13,7 @@ import com.zh.project0512.service.IUserAccountService; import com.zh.project0512.service.IUserService; import com.zh.project0512.utils.AppMessageUtil; import com.zh.project0512.utils.ExcelUtil; +import com.zh.project0512.utils.HttpUtil; import com.zh.project0512.utils.MybatisPlusUtil; import com.zh.project0512.utils.result.HttpStatusEnum; import com.zh.project0512.utils.result.Result; @@ -35,6 +37,8 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -58,6 +62,8 @@ public class UserAccountController { @Autowired private IUserService userService; + @Autowired + private HttpUtil httpUtil; @Data static class ListUAParam { private int pageNum; @@ -88,8 +94,8 @@ public class UserAccountController { public void excel(HttpServletResponse response, @Validated @RequestBody ListUAParam param) throws IOException { //这是表头及格式 String[][] array = { - {"申请人", "部门", "第三方平台","账号", "昵称", "手机号", "截图"}, - {"userName", "departmentName", "platform","account", "name", "tel", "validImg"}, + {"申请人", "部门", "第三方平台", "账号", "昵称", "手机号", "截图"}, + {"userName", "departmentName", "platform", "account", "name", "tel", "validImg"}, {"String", "String", "String", "String", "String", "String", "String"} }; QueryWrapper qw = new QueryWrapper<>(); @@ -150,21 +156,46 @@ public class UserAccountController { if (ua.getStatus() != 0) { return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "账号状态不在审核中"); } + String platForm = "未知平台"; + switch (ua.getPlatform()) { + case 1: + platForm = "抖音"; + break; + case 2: + platForm = "快手"; + break; + case 3: + platForm = "朋友圈"; + break; + case 4: + platForm = "视频号"; + break; + default: + } UpdateWrapper updateWrapper = new UpdateWrapper<>(); Integer status = param.getStatus(); - updateWrapper.eq("id", param.getId()).set("status",status).set("updateAt", LocalDateTime.now()); - String description = "恭喜您,抖音关联账号审核通过。"; - if(status == 2){ + updateWrapper.eq("id", param.getId()).set("status", status).set("updateAt", LocalDateTime.now()); + AppMessage appMessage = new AppMessage().setTitle("关联账号审核结果").setDescription("恭喜您,"+platForm+"关联账号审核通过。") + .setUrl("pages/user/subpage/relation/relation").setCreateDate(LocalDateTime.now()).setReceiverId(ua.getUserId()); + if (status == 2) { String reason = param.getReason(); - if(null == reason){ + if (null == reason) { return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "请说明拒绝理由"); } updateWrapper.set("reason", reason); - description = "您的抖音关联账号审核未通过,未通过原因:"+ reason+"。"; + appMessage.setDescription("您的"+platForm+"关联账号审核未通过,未通过原因:" + reason + "。"); } userAccountService.update(updateWrapper); - AppMessageUtil.sendMessage(new AppMessage().setTitle("关联账号审核结果").setDescription(description) - .setUrl("pages/user/subpage/relation/relation").setCreateDate(LocalDateTime.now()).setReceiverId(ua.getUserId())); + String touser = userService.getById(ua.getUserId()).getUserid(); + // 企业微信消息通知 + if (touser != null) { + appMessage.setTouser(touser); + List 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(httpUtil.qywxGetToken(), touser, "关联账号审核", null, appMessage.getUrl(), content_item); + } + AppMessageUtil.sendMessage(appMessage); return Result.success("修改完成"); } } diff --git a/src/main/java/com/zh/project0512/controller/manage/UserController.java b/src/main/java/com/zh/project0512/controller/manage/UserController.java index cfabdd8..1b7389a 100644 --- a/src/main/java/com/zh/project0512/controller/manage/UserController.java +++ b/src/main/java/com/zh/project0512/controller/manage/UserController.java @@ -137,6 +137,34 @@ public class UserController { private String remarks; } + @Data + static class DetUParam { + private Integer pageNum; + private Integer pageSize; + @NotNull(message = "userId不能为空") + @Min(value = 1, message = "userId最小值为1") + @Schema(title = "用户id") + private Integer userId; + @Schema(title = "类型",description = "1.任务奖励,2.素材分享奖励,3.线下结算扣除 4.后台更改") + private Integer type; + @Schema(title = "结算方式",description = "1.增加,2.扣除") + private Integer settlementMethod; + } + @Operation(summary = "用户积分记录") + @PostMapping("/pointsRecords") + @Transactional + @AdminTokenValid + public Result pointsRecords(@Validated @RequestBody DetUParam param) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("userId",param.getUserId()); + qw.eq(param.getType()!=null,"type",param.getType()); + qw.eq(param.getSettlementMethod()!=null,"type",param.getSettlementMethod()); + qw.select("*,(case when type = 0 then '无' when type = 1 then '任务奖励'" + + " when type =2 then '素材分享奖励' when type = 3 then '线下结算扣除' when type = 4 then '后台更改' else '其他' end) as typeDSC," + + "(case when settlementMethod = 1 then '增加' when settlementMethod = 2 then '扣除' else '无' end) as settlementMethodDSC "); + return Result.success(userPointsRecordsService.page(MybatisPlusUtil.SetNumPage(param.getPageNum(), param.getPageSize()),qw)); + } + @Operation(summary = "修改积分") @PostMapping("/pointsTran") @Transactional diff --git a/src/main/java/com/zh/project0512/controller/manage/VideoController.java b/src/main/java/com/zh/project0512/controller/manage/VideoController.java index c78c6e8..bcb414b 100644 --- a/src/main/java/com/zh/project0512/controller/manage/VideoController.java +++ b/src/main/java/com/zh/project0512/controller/manage/VideoController.java @@ -4,6 +4,8 @@ package com.zh.project0512.controller.manage; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.annotation.JsonFormat; import com.zh.project0512.annotation.AdminCheckAuthorityAnnotation; import com.zh.project0512.annotation.AdminTokenValid; import com.zh.project0512.mapper.UserEffectRecordsMapper; @@ -13,6 +15,7 @@ import com.zh.project0512.service.IUserService; import com.zh.project0512.service.IVideoEffectSettingService; import com.zh.project0512.service.IVideoService; import com.zh.project0512.utils.AppMessageUtil; +import com.zh.project0512.utils.ExcelUtil; import com.zh.project0512.utils.HttpUtil; import com.zh.project0512.utils.MybatisPlusUtil; import com.zh.project0512.utils.result.HttpStatusEnum; @@ -21,19 +24,24 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.Data; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.util.*; /** *

@@ -73,6 +81,12 @@ public class VideoController { private Integer departmentId; @Schema(title = "任务标题") private String taskTitle; + @Schema(title = "开始时间(yyyy-MM-dd HH:mm:ss)") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime beginTime; + @Schema(title = "结束时间(yyyy-MM-dd HH:mm:ss)") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; } @Operation(summary = "审核视频列表") @@ -84,9 +98,51 @@ public class VideoController { qw.like(param.providerName != null, "t2.name", param.getProviderName()); qw.eq(param.getDepartmentId() != null, "t3.departmentId", param.getDepartmentId()); qw.like(param.getTaskTitle() != null, "t4.title", param.getTaskTitle()); + qw.ge(param.getBeginTime() != null, "t1.creatAt", param.getBeginTime()); + qw.le(param.getEndTime() != null, "t1.creatAt", param.getEndTime()); return Result.success(videoService.pageList(MybatisPlusUtil.SetNumPage(param.getPageNum(), param.getPageSize()), qw)); } + @Operation(summary = "导出excel", description = "审核视频列表导出") + @PostMapping("/excel") + @AdminTokenValid + public void excel(HttpServletResponse response, @Validated @RequestBody VParam param) throws IOException { + //这是表头及格式 + String[][] array ={ + {"申请人", "任务标题","平台","传播链接","播放数","点赞数","收藏数","评论数","转发数","推荐数","提交时间"}, + {"providerName", "taskTitle","type","url","playNum","commendNum","collectionNum","commentNum","reSendNum","recommendNum","creatAt"}, + {"String", "String","String","String","int","int","int","int","int","int","LocalDateTime"} + }; + QueryWrapper