From 7e0a37c072d52fb0c3f3db2397d7e193094e28bc Mon Sep 17 00:00:00 2001 From: zhangjinli Date: Wed, 29 Jun 2022 21:28:48 +0800 Subject: [PATCH] zh --- .../controller/ScheduleController.java | 53 ++++++++++-- .../controller/UtilsController.java | 61 +++----------- .../wxApp/UserPointsController.java | 55 ------------ .../wxApp/UserPointsRecordsController.java | 83 +++++++++++++++++++ .../com/zh/project0512/mapper/UserMapper.java | 9 +- .../mapper/UserPointsRecordMapper.java | 7 -- .../mapper/UserPointsRecordsMapper.java | 16 ++++ .../zh/project0512/mapper/VideoMapper.java | 4 +- .../project0512/model/UserPointsRecords.java | 44 ++++++---- .../model/dto/UserPointsRecordListDTO.java | 43 ---------- .../model/vo/UserPointsRecordListVo.java | 45 ---------- .../service/IUserPointsRecordsService.java | 30 +++---- .../UserPointsRecordServiceImpl.java | 59 ------------- .../UserPointsRecordsServiceImpl.java | 20 +++++ 14 files changed, 225 insertions(+), 304 deletions(-) delete mode 100644 src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java create mode 100644 src/main/java/com/zh/project0512/controller/wxApp/UserPointsRecordsController.java delete mode 100644 src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java create mode 100644 src/main/java/com/zh/project0512/mapper/UserPointsRecordsMapper.java delete mode 100644 src/main/java/com/zh/project0512/model/dto/UserPointsRecordListDTO.java delete mode 100644 src/main/java/com/zh/project0512/model/vo/UserPointsRecordListVo.java delete mode 100644 src/main/java/com/zh/project0512/serviceImpl/UserPointsRecordServiceImpl.java create mode 100644 src/main/java/com/zh/project0512/serviceImpl/UserPointsRecordsServiceImpl.java diff --git a/src/main/java/com/zh/project0512/controller/ScheduleController.java b/src/main/java/com/zh/project0512/controller/ScheduleController.java index c04a80d..ceee99c 100644 --- a/src/main/java/com/zh/project0512/controller/ScheduleController.java +++ b/src/main/java/com/zh/project0512/controller/ScheduleController.java @@ -5,12 +5,16 @@ 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.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.PropertyUtils; import io.swagger.v3.oas.annotations.tags.Tag; @@ -21,11 +25,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; @Tag(name = "定时任务") @RestController @@ -38,7 +41,12 @@ public class ScheduleController { RankMapper rankMapper; @Autowired private IVideoService videoService; - + @Autowired + private UserMapper userMapper; + @Autowired + private IRewardRuleService rewardRuleService; + @Autowired + private IUserPointsRecordsService userPointsRecordsService; @Scheduled(cron = "0 0 0 * * ?") public void taskBegin() { UpdateWrapper ew = new UpdateWrapper<>(); @@ -64,10 +72,41 @@ public class ScheduleController { @Scheduled(cron = "0 0 0 * * ?") @Transactional public void videoEffect() { -// taskService.getMap() - Integer taskId = 1; // 任务结束7天时,自动结算积分 - videoService.videoEffectResult(taskId); + QueryWrapper qw = new QueryWrapper<>(); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime weekAgo = now.minusWeeks(1); + String format = weekAgo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + qw.eq("date_format(end, '%Y-%m-%d')", format); + List taskList = taskService.list(qw); + // 处理每个任务的传播值 + for (Task t : taskList) { + Integer taskId = t.getId(); + List videoEffectResult = videoService.videoEffectResult(taskId); + List rewardRule = rewardRuleService.listByTemplateId(t.getRewardRuleTemplateId()); + List recordsList = new ArrayList<>(); + System.out.println("videoEffectResult" + videoEffectResult); + // 处理任务中每个用户的传播值 + 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"); + // 根据传播值计算规则算出奖励 + 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)); + } + } + // 按任务生成积分流水记录 + userPointsRecordsService.saveBatch(recordsList); + } } // @Scheduled(cron = "0 0/1 * * * ? ") // @Scheduled(cron = "0 0 0 1 1/1 ?") diff --git a/src/main/java/com/zh/project0512/controller/UtilsController.java b/src/main/java/com/zh/project0512/controller/UtilsController.java index d80d32d..a9a688d 100644 --- a/src/main/java/com/zh/project0512/controller/UtilsController.java +++ b/src/main/java/com/zh/project0512/controller/UtilsController.java @@ -2,31 +2,32 @@ package com.zh.project0512.controller; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //import com.zh.project0512.service.IUserService; -import com.zh.project0512.mapper.QywxDepartmentGroupLinkMapper; +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.dto.RankListDTO; import com.zh.project0512.model.vo.RankListVo; -import com.zh.project0512.service.IQywxDepartmentGroupLinkService; 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.AliyunOss; import com.zh.project0512.utils.FileTypeUtil; import com.zh.project0512.utils.result.HttpStatusEnum; import com.zh.project0512.utils.result.Result; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -34,6 +35,7 @@ import ws.schild.jave.MultimediaObject; import javax.annotation.Resource; import java.io.File; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; @@ -157,10 +159,9 @@ public class UtilsController { RankMapper rankMapper; @Autowired private IVideoService videoService; - @Autowired - private IRewardRuleService rewardRuleService; - @Autowired - private IQywxDepartmentGroupLinkService qywxDepartmentGroupLinkService; + + + @PostMapping("/test") @ResponseBody public Result test() { @@ -180,46 +181,4 @@ public class UtilsController { return Result.success(rankUserList); } - @Data - static class Param { - @Schema(title="接受任务部门列表") - private List departmentList; - } - - @Autowired - private QywxDepartmentGroupLinkMapper qywxDepartmentGroupLinkMapper; - @PostMapping("/test2") - @ResponseBody - public Result test2(@RequestBody Param param) { - List departmentIdList = qywxDepartmentGroupLinkService.departmentIdList(0,param.getDepartmentList()); -// QueryWrapper qw = new QueryWrapper<>(); -// LocalDateTime now = LocalDateTime.now().minusWeeks(1); -// String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); -// qw.eq("date_format(end, '%Y-%m-%d')", format); -// List taskList = taskService.list(qw); -// // 处理每个任务的传播值 -// -// // 生成奖励流水并更新给用户积分 -// for (Task t : taskList) { -// Integer taskId = t.getId(); -// List videoEffectResult = videoService.videoEffectResult(taskId); -// List rewardRule = rewardRuleService.listByTemplateId(t.getRewardRuleTemplateId()); -// -// System.out.println("videoEffectResult" + videoEffectResult); -// // 处理任务中每个用户的传播值 -// for (Map m : videoEffectResult) { -// if (m.get("effectResultSum") != null && (Integer) m.get("effectResultSum") != 0) { -// int point = 0; -// int effectResultSum = (Integer) m.get("effectResultSum"); -// // 根据传播值计算规则算出奖励 -// for (Map r : rewardRule) { -// if (effectResultSum > (Integer) r.get("limitNum")) { -// point = (Integer) r.get("reward"); -// } -// } -// } -// } -// } - return Result.success(); - } } diff --git a/src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java b/src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java deleted file mode 100644 index f18cedd..0000000 --- a/src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.zh.project0512.controller.wxApp; - -import com.zh.project0512.annotation.TokenValid; -import com.zh.project0512.model.dto.UserPointsRecordListDTO; -import com.zh.project0512.model.vo.UserPointsRecordListVo; -import com.zh.project0512.model.vo.UserPointsVo; -import com.zh.project0512.service.IUserPointsRecordsService; -import com.zh.project0512.utils.JwtUtil; -import com.zh.project0512.utils.result.Result; -import com.zh.project0512.utils.result.ResultPageInfo; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - -/** - * 用户积分 - */ -@Tag(name = "用户积分") -@RestController -@RequestMapping("/wxApp/userPoints") -public class UserPointsController { - @Resource - IUserPointsRecordsService userPointsRecordsService; - - - /** - * 查询用户积分详情 - * @return 用户积分详情 - */ - @Operation(summary = "用户积分详情") - @PostMapping("/detail") - @TokenValid - public Result pointsDetail(@RequestHeader String token){ - String openid = new JwtUtil().parseOpenid(token); - return Result.success(userPointsRecordsService.pointsDetail(openid),"请求成功"); - } - - /** - * 查询用户积分记录 - * @param userPointsRecordListDTO 用户积分记录 list DTO - * @return 用户积分记录 list Vo - */ - @Operation(summary = "用户积分记录") - @PostMapping("/list") - @TokenValid - public ResultPageInfo list(@Validated @RequestBody UserPointsRecordListDTO userPointsRecordListDTO,@RequestHeader String token){ - String openid = new JwtUtil().parseOpenid(token); - return ResultPageInfo.success(userPointsRecordsService.list(userPointsRecordListDTO,openid),"请求成功"); - } - -} - diff --git a/src/main/java/com/zh/project0512/controller/wxApp/UserPointsRecordsController.java b/src/main/java/com/zh/project0512/controller/wxApp/UserPointsRecordsController.java new file mode 100644 index 0000000..8923b75 --- /dev/null +++ b/src/main/java/com/zh/project0512/controller/wxApp/UserPointsRecordsController.java @@ -0,0 +1,83 @@ +package com.zh.project0512.controller.wxApp; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zh.project0512.annotation.TokenValid; +import com.zh.project0512.model.User; +import com.zh.project0512.model.UserPointsRecords; +import com.zh.project0512.service.IUserPointsRecordsService; +import com.zh.project0512.service.IUserService; +import com.zh.project0512.utils.JwtUtil; +import com.zh.project0512.utils.result.Result; +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.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * 用户积分 + */ +@Tag(name = "用户积分") +@RestController +@RequestMapping("/wxApp/userPoints") +public class UserPointsRecordsController { + @Autowired + private IUserPointsRecordsService userPointsRecordsService; + @Autowired + private IUserService userService; +// @Resource +// IUserPointsRecordsService userPointsRecordsService; +// +// + + /** + * 查询用户积分详情 + */ + @Operation(summary = "用户积分详情") + @PostMapping("/detail") + @TokenValid + public Result pointsDetail(@RequestHeader String token) { + String openid = new JwtUtil().parseOpenid(token); + User user = userService.selByOpenid(openid); + return Result.success(new JSONObject().fluentPut("points", user.getPoints()).fluentPut("historyPoints", user.getHistoryPoints()), "请求成功"); + } + + @Data + static class UPRParam { + @NotNull(message = "year不能为空") + @Schema(title = "年份") + private Integer year; + @NotNull(message = "month不能为空") + @Schema(title = "月份") + private Integer month; + } + + /** + * 查询用户积分记录 + */ + @Operation(summary = "用户积分记录") + @PostMapping("/list") + @TokenValid + public Result list(@Validated @RequestBody UPRParam param, @RequestHeader String token) { + String openid = new JwtUtil().parseOpenid(token); + User user = userService.selByOpenid(openid); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("userId", user.getId()); + LocalDate now = LocalDate.of(param.getYear(), param.getMonth(),1); + String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM")); + qw.eq("date_format(createDate, '%Y-%m')", format); + qw.orderByDesc("createDate"); + return Result.success(userPointsRecordsService.list(qw), "请求成功"); + } + + +} + diff --git a/src/main/java/com/zh/project0512/mapper/UserMapper.java b/src/main/java/com/zh/project0512/mapper/UserMapper.java index 4ff91bd..0053abe 100644 --- a/src/main/java/com/zh/project0512/mapper/UserMapper.java +++ b/src/main/java/com/zh/project0512/mapper/UserMapper.java @@ -7,6 +7,7 @@ import com.zh.project0512.model.Reference; import com.zh.project0512.model.User; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.time.LocalDateTime; import java.util.List; @@ -14,7 +15,7 @@ import java.util.Map; /** *

- * Mapper 接口 + * Mapper 接口 *

* * @author zh @@ -23,10 +24,13 @@ import java.util.Map; public interface UserMapper extends BaseMapper { @Select("SELECT * FROM user where openid=#{openid} ") User selByOpenid(@Param("openid") String openid); + @Select("SELECT t1.*,t2.name as departmentName FROM user t1 left join qywxDepartment t2 on t1.main_department = t2.departmentId where openid=#{openid} ") Map selByOpenid2(@Param("openid") String openid); + @Select("UPDATE user set token=#{token},lastLoginAt=#{time} where openid=#{openid}") void updByOpenid(String openid, String token, LocalDateTime time); + @Select("SELECT t1.name,t1.tel,t1.avatar,t1.main_department,t1.sub_department,t1.creatAt,t1.updateAt,t1.lastLoginAt" + ",t2.name as main_departmentName,t3.name as sub_departmentName " + "from user as t1 " + @@ -35,4 +39,7 @@ public interface UserMapper extends BaseMapper { "${ew.customSqlSegment} " + "ORDER BY lastLoginAt DESC,updateAt DESC,creatAt DESC") IPage pageList(IPage iPage, @Param("ew") Wrapper queryWrapper); + + @Update("UPDATE user set points = points + #{record},historyPoints = historyPoints + #{record} WHERE id = #{userId}") + void updPoints(int userId, int record); } diff --git a/src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java b/src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java deleted file mode 100644 index f311b84..0000000 --- a/src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.zh.project0512.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zh.project0512.model.UserPointsRecords; - -public interface UserPointsRecordMapper extends BaseMapper { -} diff --git a/src/main/java/com/zh/project0512/mapper/UserPointsRecordsMapper.java b/src/main/java/com/zh/project0512/mapper/UserPointsRecordsMapper.java new file mode 100644 index 0000000..8e3b5e2 --- /dev/null +++ b/src/main/java/com/zh/project0512/mapper/UserPointsRecordsMapper.java @@ -0,0 +1,16 @@ +package com.zh.project0512.mapper; + +import com.zh.project0512.model.UserPointsRecords; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zh + * @since 2022-06-29 + */ +public interface UserPointsRecordsMapper extends BaseMapper { + +} diff --git a/src/main/java/com/zh/project0512/mapper/VideoMapper.java b/src/main/java/com/zh/project0512/mapper/VideoMapper.java index 6b9e465..2cfdc78 100644 --- a/src/main/java/com/zh/project0512/mapper/VideoMapper.java +++ b/src/main/java/com/zh/project0512/mapper/VideoMapper.java @@ -54,11 +54,11 @@ public interface VideoMapper extends BaseMapper