diff --git a/src/main/java/com/zh/project0512/controller/wxApp/RankController.java b/src/main/java/com/zh/project0512/controller/wxApp/RankController.java index c259341..a36146d 100644 --- a/src/main/java/com/zh/project0512/controller/wxApp/RankController.java +++ b/src/main/java/com/zh/project0512/controller/wxApp/RankController.java @@ -3,11 +3,9 @@ package com.zh.project0512.controller.wxApp; import com.zh.project0512.model.dto.RankListDTO; import com.zh.project0512.model.vo.RankListVo; import com.zh.project0512.service.IRankService; -import com.zh.project0512.utils.result.ResultList; 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.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java b/src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java new file mode 100644 index 0000000..c259896 --- /dev/null +++ b/src/main/java/com/zh/project0512/controller/wxApp/UserPointsController.java @@ -0,0 +1,50 @@ +package com.zh.project0512.controller.wxApp; + +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 = "用户积分详情") + @GetMapping("/pointsDetail") + 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") + public ResultPageInfo list(@Validated @RequestBody UserPointsRecordListDTO userPointsRecordListDTO){ + return ResultPageInfo.success(userPointsRecordsService.list(userPointsRecordListDTO),"请求成功"); + } + +} diff --git a/src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java b/src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java new file mode 100644 index 0000000..f311b84 --- /dev/null +++ b/src/main/java/com/zh/project0512/mapper/UserPointsRecordMapper.java @@ -0,0 +1,7 @@ +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/model/User.java b/src/main/java/com/zh/project0512/model/User.java index 7e9e431..10ac160 100644 --- a/src/main/java/com/zh/project0512/model/User.java +++ b/src/main/java/com/zh/project0512/model/User.java @@ -111,4 +111,17 @@ public class User extends Model { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime lastLoginAt; + /** + * 当前积分 + */ + @Schema(title = "当前积分") + private Integer points; + + /** + * 历史积分 + */ + @TableField("lastLoginAt") + @Schema(title = "历史积分") + private Integer historyPoints; + } diff --git a/src/main/java/com/zh/project0512/model/UserPointsRecords.java b/src/main/java/com/zh/project0512/model/UserPointsRecords.java new file mode 100644 index 0000000..65bb337 --- /dev/null +++ b/src/main/java/com/zh/project0512/model/UserPointsRecords.java @@ -0,0 +1,50 @@ +package com.zh.project0512.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户积分记录 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@TableName("userPointsRecords") +public class UserPointsRecords implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Integer id; + /** + * 类型,1.任务奖励,2.素材分享奖励,3.线下结算扣除 + */ + @TableField("type") + private Integer type; + /** + * 结算方式,1.增加,2.扣除 + */ + @TableField("settlementMethod") + private Integer settlementMethod; + /** + * 积分 + */ + @TableField("points") + private Integer points; + /** + * 创建日期 + */ + @TableField("createDate") + private Date createDate; +} diff --git a/src/main/java/com/zh/project0512/model/dto/RankListDTO.java b/src/main/java/com/zh/project0512/model/dto/RankListDTO.java index 3590daf..33021de 100644 --- a/src/main/java/com/zh/project0512/model/dto/RankListDTO.java +++ b/src/main/java/com/zh/project0512/model/dto/RankListDTO.java @@ -30,9 +30,9 @@ public class RankListDTO implements Serializable { @NotNull(message = "每页记录数不能为空") private int size; /** - * 类型:1.经销商,2.员工 + * 排行榜类型:1.经销商,2.员工 */ - @Schema(title = "排行榜类型") + @Schema(title = "排行榜类型",description = "1.经销商,2.员工") @NotNull(message = "排行榜类型不能为空") private int type; } diff --git a/src/main/java/com/zh/project0512/model/dto/UserPointsRecordListDTO.java b/src/main/java/com/zh/project0512/model/dto/UserPointsRecordListDTO.java new file mode 100644 index 0000000..3289772 --- /dev/null +++ b/src/main/java/com/zh/project0512/model/dto/UserPointsRecordListDTO.java @@ -0,0 +1,42 @@ +package com.zh.project0512.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 用户积分记录 list DTO + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserPointsRecordListDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 当前页数 + */ + @Schema(title = "当前页数") + @NotNull(message = "当前页数不能为空") + private int pageNum; + /** + * 每页记录数 + */ + @Schema(title = "每页记录数") + @NotNull(message = "每页记录数不能为空") + private int size; + /** + * 年 + */ + @Schema(title = "年") + private Integer years; + /** + * 月 + */ + @Schema(title = "月") + private Integer months; +} diff --git a/src/main/java/com/zh/project0512/model/vo/RankListVo.java b/src/main/java/com/zh/project0512/model/vo/RankListVo.java index 77be9ce..05cf205 100644 --- a/src/main/java/com/zh/project0512/model/vo/RankListVo.java +++ b/src/main/java/com/zh/project0512/model/vo/RankListVo.java @@ -1,6 +1,7 @@ package com.zh.project0512.model.vo; import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -19,17 +20,21 @@ public class RankListVo implements Serializable { /** * 关联主键id(用户主键id,经销商主键id) */ + @Schema(title = "关联主键id(用户主键id,经销商主键id)") private String linkId; /** * 标题 */ + @Schema(title = "标题") private String title; /** * 副标题 */ + @Schema(title = "副标题") private String subtitle; /** * 传播值 */ + @Schema(title = "传播值") private int value; } diff --git a/src/main/java/com/zh/project0512/model/vo/UserPointsRecordListVo.java b/src/main/java/com/zh/project0512/model/vo/UserPointsRecordListVo.java new file mode 100644 index 0000000..9667371 --- /dev/null +++ b/src/main/java/com/zh/project0512/model/vo/UserPointsRecordListVo.java @@ -0,0 +1,45 @@ +package com.zh.project0512.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户积分记录 list Vo + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserPointsRecordListVo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键Id + */ + @Schema(title = "主键Id") + private Integer id; + /** + * 类型,1.任务奖励,2.素材分享奖励,3.线下结算扣除 + */ + @Schema(title = "类型",description = "1.任务奖励,2.素材分享奖励,3.线下结算扣除") + private Integer type; + /** + * 结算方式,1.增加,2.扣除 + */ + @Schema(title = "结算方式",description = "1.增加,2.扣除") + private Integer settlementMethod; + /** + * 积分 + */ + @Schema(title = "积分") + private Integer points; + /** + * 创建日期 + */ + @Schema(title = "创建日期") + private Date createDate; +} diff --git a/src/main/java/com/zh/project0512/model/vo/UserPointsVo.java b/src/main/java/com/zh/project0512/model/vo/UserPointsVo.java new file mode 100644 index 0000000..b88a051 --- /dev/null +++ b/src/main/java/com/zh/project0512/model/vo/UserPointsVo.java @@ -0,0 +1,29 @@ +package com.zh.project0512.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 用户积分 Vo + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserPointsVo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 当前积分 + */ + @Schema(title = "当前积分") + private Integer points; + /** + * 累计获得积分 + */ + @Schema(title = "累计获得积分") + private Integer historyPoints; +} diff --git a/src/main/java/com/zh/project0512/service/IUserPointsRecordsService.java b/src/main/java/com/zh/project0512/service/IUserPointsRecordsService.java new file mode 100644 index 0000000..f62691a --- /dev/null +++ b/src/main/java/com/zh/project0512/service/IUserPointsRecordsService.java @@ -0,0 +1,23 @@ +package com.zh.project0512.service; + +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.utils.page.PageInfo; + +public interface IUserPointsRecordsService { + /** + * 查询用户积分详情 + * @param openid 小程序唯一标识 + * @return 用户积分 Vo + */ + UserPointsVo pointsDetail(String openid); + + /** + * 查询用户积分记录 + * @param userPointsRecordListDTO 用户积分记录 list DTO + * @return 用户积分记录 list Vo + */ + PageInfo list(UserPointsRecordListDTO userPointsRecordListDTO); + +} diff --git a/src/main/java/com/zh/project0512/serviceImpl/UserPointsRecordServiceImpl.java b/src/main/java/com/zh/project0512/serviceImpl/UserPointsRecordServiceImpl.java new file mode 100644 index 0000000..ed7ef37 --- /dev/null +++ b/src/main/java/com/zh/project0512/serviceImpl/UserPointsRecordServiceImpl.java @@ -0,0 +1,61 @@ +package com.zh.project0512.serviceImpl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zh.project0512.mapper.UserMapper; +import com.zh.project0512.mapper.UserPointsRecordMapper; +import com.zh.project0512.model.Rank; +import com.zh.project0512.model.User; +import com.zh.project0512.model.UserPointsRecords; +import com.zh.project0512.model.dto.UserPointsRecordListDTO; +import com.zh.project0512.model.vo.RankListVo; +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.PropertyUtils; +import com.zh.project0512.utils.page.PageInfo; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +@Service +public class UserPointsRecordServiceImpl implements IUserPointsRecordsService { + @Resource + UserPointsRecordMapper userPointsRecordMapper; + @Resource + UserMapper userMapper; + + + @Override + public UserPointsVo pointsDetail(String openid) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("openid",openid); + User user = userMapper.selectOne(queryWrapper); + UserPointsVo userPointsVo = new UserPointsVo(); + userPointsVo.setPoints(user.getPoints()); + userPointsVo.setHistoryPoints(user.getHistoryPoints()); + return userPointsVo; + } + + @Override + public PageInfo list(UserPointsRecordListDTO userPointsRecordListDTO) { + ArrayList userPointsRecordListVos = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(userPointsRecordListDTO.getYears() != null,"YEAR(createDate)",userPointsRecordListDTO.getYears()); + queryWrapper.eq(userPointsRecordListDTO.getMonths() != null,"MONTH(createDate)",userPointsRecordListDTO.getMonths()); + Page page = new Page<>(userPointsRecordListDTO.getPageNum(), userPointsRecordListDTO.getSize()); + IPage userPointsRecordsIPage = userPointsRecordMapper.selectPage(page, queryWrapper); + List records = userPointsRecordsIPage.getRecords(); + if (records != null && records.size()>0){ + for (UserPointsRecords record : records) { + UserPointsRecordListVo userPointsRecordListVo = new UserPointsRecordListVo(); + PropertyUtils.copyProperties(record,userPointsRecordListVo); + userPointsRecordListVos.add(userPointsRecordListVo); + } + } + return new PageInfo<>(userPointsRecordsIPage.getPages(), userPointsRecordListVos, userPointsRecordsIPage.getTotal()); + } +}