Commit 8559711e by xunj

心愿抽奖

1 parent 9e0212e6
package com.polysoft.activity.controller; package com.polysoft.activity.controller;
import com.github.pagehelper.PageHelper;
import com.polysoft.activity.model.param.AddWishParam; import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.model.param.QueryWishParam;
import com.polysoft.activity.service.UserInfoService; import com.polysoft.activity.service.UserInfoService;
import com.polysoft.activity.service.WishService; import com.polysoft.activity.service.WishService;
import com.polysoft.activity.utils.ApiResult; import com.polysoft.activity.utils.ApiResult;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; 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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -25,9 +29,13 @@ public class WishController { ...@@ -25,9 +29,13 @@ public class WishController {
@PostMapping("/addWish" ) @PostMapping("/addWish" )
@ResponseBody @ResponseBody
public ApiResult addWish(AddWishParam param) { public ApiResult addWish(@RequestBody @Validated AddWishParam param) {
return wishService.addWish(param); return wishService.addWish(param);
} }
@GetMapping("/queryWishList" )
@ResponseBody
public ApiResult queryWishList(@RequestBody QueryWishParam param) {
return wishService.queryWishList(param);
}
} }
...@@ -2,8 +2,18 @@ package com.polysoft.activity.mapper; ...@@ -2,8 +2,18 @@ package com.polysoft.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.polysoft.activity.model.dto.AddWishDto; import com.polysoft.activity.model.dto.AddWishDto;
import com.polysoft.activity.model.param.QueryWishParam;
import com.polysoft.activity.model.vo.QueryLuckDrawWishVO;
import com.polysoft.activity.model.vo.QueryRealPrizeVO;
import com.polysoft.activity.model.vo.WishVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper @Mapper
public interface WishMapper extends BaseMapper<AddWishDto> { public interface WishMapper extends BaseMapper<AddWishDto> {
List<WishVO> queryWishList(QueryWishParam pageNum);
List<QueryLuckDrawWishVO> queryLuckDrawWish();
QueryRealPrizeVO querRealPrize();
} }
package com.polysoft.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.polysoft.activity.model.dto.WishRealPrizeDto;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;
import java.util.List;
/**
* @author lvyp
* @date 2021/1/28
*/
@Mapper
public interface WishRealPrizeMapper extends BaseMapper<WishRealPrizeDto> {
int saveWishRealPrizeForList(@Param("list")List<WishRealPrizeDto> list);
}
package com.polysoft.activity.model.dto;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/28
*/
@Data
@TableName(value = "t_wish_real_prize")
public class WishRealPrizeDto {
private Long id;
private Long userId;
private Long wishId;
private Long prizeId;
private String createTime;
public void setCreateTime(Date date) {
this.createTime = DateUtil.format(date,"yyyy-MM-dd HH:mm:ss");
}
}
...@@ -15,7 +15,6 @@ import java.util.List; ...@@ -15,7 +15,6 @@ import java.util.List;
*/ */
@Data @Data
public class AddWishParam { public class AddWishParam {
private Long wishId;
@ApiModelProperty("用户主键") @ApiModelProperty("用户主键")
@NotBlank(message = "用户主键不能为空") @NotBlank(message = "用户主键不能为空")
private Long userId ; private Long userId ;
...@@ -29,5 +28,7 @@ public class AddWishParam { ...@@ -29,5 +28,7 @@ public class AddWishParam {
private String wishContext ; private String wishContext ;
@ApiModelProperty("0 未中奖 1 中奖") @ApiModelProperty("0 未中奖 1 中奖")
private int prizeFalg =0; private int prizeFalg =0;
@ApiModelProperty("图片")
@NotBlank(message = "心愿图片不能为空")
private List<MultipartFile> multipartFiles; private List<MultipartFile> multipartFiles;
} }
package com.polysoft.activity.model.param;
import com.polysoft.activity.common.utils.PageQuery;
import lombok.Data;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class QueryWishParam extends PageQuery{
private String pushDate;
private Long userId;
private Long wishId;
}
package com.polysoft.activity.model.vo;
import lombok.Data;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class QueryLuckDrawWishVO {
private Long wishId;
private Long userId;
}
package com.polysoft.activity.model.vo;
import lombok.Data;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
public class QueryRealPrizeVO {
private Long prizeId;
private String prizeName;
private String luckDrawDate;
private String prizeNum;
private String prizePrice;
}
package com.polysoft.activity.model.vo;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/26
*/
@Data
public class WishVO {
private Long wishId;
@ApiModelProperty("用户主键")
private Long userId ;
@ApiModelProperty("姓名")
private String userName ;
@ApiModelProperty("城市地址")
private String address ;
@ApiModelProperty("心愿语录内容")
private String wishContext ;
@ApiModelProperty("0 未中奖 1 中奖")
private int prizeFalg =0;
@ApiModelProperty("创建日期")
private String createTime ;
@ApiModelProperty("发布日期 示例:2020-01-21")
private String pushDate ;
@ApiModelProperty("0 未删除 1 已删除")
private int deleteFalg =0 ;
private String picUrl;
}
package com.polysoft.activity.service; package com.polysoft.activity.service;
import com.polysoft.activity.model.dto.AddWishDto;
import com.polysoft.activity.model.param.AddWishParam; import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.model.param.QueryWishParam;
import com.polysoft.activity.model.vo.QueryLuckDrawWishVO;
import com.polysoft.activity.model.vo.QueryRealPrizeVO;
import com.polysoft.activity.model.vo.WishVO;
import com.polysoft.activity.utils.ApiResult; import com.polysoft.activity.utils.ApiResult;
import java.util.List;
public interface WishService { public interface WishService {
ApiResult addWish(AddWishParam param); ApiResult addWish(AddWishParam param);
ApiResult queryWishList(QueryWishParam pageNum);
List<QueryLuckDrawWishVO> queryLuckDrawWish();
QueryRealPrizeVO querRealPrize();
} }
package com.polysoft.activity.service.impl; package com.polysoft.activity.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.polysoft.activity.common.utils.BeanTransferUtils; import com.polysoft.activity.common.utils.BeanTransferUtils;
import com.polysoft.activity.common.utils.PageResult;
import com.polysoft.activity.mapper.WishMapper; import com.polysoft.activity.mapper.WishMapper;
import com.polysoft.activity.mapper.WishPicMapper; import com.polysoft.activity.mapper.WishPicMapper;
import com.polysoft.activity.model.dto.AddWishDto; import com.polysoft.activity.model.dto.AddWishDto;
import com.polysoft.activity.model.dto.WishPicDto; import com.polysoft.activity.model.dto.WishPicDto;
import com.polysoft.activity.model.param.AddWishParam; import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.model.param.QueryWishParam;
import com.polysoft.activity.model.vo.QueryLuckDrawWishVO;
import com.polysoft.activity.model.vo.QueryRealPrizeVO;
import com.polysoft.activity.model.vo.WishVO;
import com.polysoft.activity.service.WishService; import com.polysoft.activity.service.WishService;
import com.polysoft.activity.utils.ApiResult; import com.polysoft.activity.utils.ApiResult;
import com.polysoft.activity.utils.FileUtils; import com.polysoft.activity.utils.FileUtils;
...@@ -15,7 +25,9 @@ import org.springframework.stereotype.Service; ...@@ -15,7 +25,9 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List;
@Service @Service
...@@ -58,4 +70,21 @@ public class WishServiceImpl implements WishService { ...@@ -58,4 +70,21 @@ public class WishServiceImpl implements WishService {
return ApiResult.error(); return ApiResult.error();
} }
} }
@Override
public ApiResult queryWishList(QueryWishParam param) {
PageHelper.startPage(param.getPageNum(),param.getPageSize());
PageResult<WishVO> result = BeanTransferUtils.toPagedResult(mapper.queryWishList(param),WishVO.class);
return ApiResult.ok(result);
}
@Override
public List<QueryLuckDrawWishVO> queryLuckDrawWish() {
return mapper.queryLuckDrawWish();
}
@Override
public QueryRealPrizeVO querRealPrize() {
return mapper.querRealPrize();
}
} }
package com.polysoft.activity.task;
import com.polysoft.activity.common.log.LoggerHelper;
import com.polysoft.activity.mapper.WishRealPrizeMapper;
import com.polysoft.activity.model.dto.WishRealPrizeDto;
import com.polysoft.activity.model.vo.QueryLuckDrawWishVO;
import com.polysoft.activity.model.vo.QueryRealPrizeVO;
import com.polysoft.activity.service.WishService;
import com.polysoft.activity.utils.SnowFlakeUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author lvyp
* @date 2021/1/21
*/
@Component
@EnableScheduling
public class WishLuckDrawTask {
@Resource
private WishService wishService;
@Resource
private WishRealPrizeMapper wishRealPrizeMapper;
@Scheduled( cron = "0 21 20 * * ? ")
// @Scheduled( cron = "0 55 10 * * ? ")
public void execute() {
try {
sendWechat();
} catch (Exception e) {
LoggerHelper.err(this.getClass(), "EpidemicForSendWechatp休眠异常:{}", e);
}
}
private void sendWechat(){
//查询疫情回访数据基础表
LoggerHelper.info(this.getClass(),"任务开始");
List<QueryLuckDrawWishVO> wishForToday = wishService.queryLuckDrawWish();
QueryRealPrizeVO realPrizeVO = wishService.querRealPrize();
List<WishRealPrizeDto> dtos = new ArrayList<>();
Date date = new Date();
if(wishForToday !=null && wishForToday.size() >0 && realPrizeVO != null) {
if (wishForToday.size() < 10) {
wishForToday.forEach(item -> {
WishRealPrizeDto dto = new WishRealPrizeDto();
dto.setId(SnowFlakeUtil.nextId());
dto.setUserId(item.getUserId());
dto.setWishId(item.getWishId());
dto.setPrizeId(realPrizeVO.getPrizeId());
dto.setCreateTime(date);
dtos.add(dto);
});
}else {
HashSet<Integer> has = getLuckUser(10, wishForToday.size());
List<QueryLuckDrawWishVO> luckWish = wishService.queryLuckDrawWish();
for (Integer n : has) {
QueryLuckDrawWishVO item = luckWish.get(n);
WishRealPrizeDto dto = new WishRealPrizeDto();
dto.setId(SnowFlakeUtil.nextId());
dto.setUserId(item.getUserId());
dto.setWishId(dto.getWishId());
dto.setPrizeId(realPrizeVO.getPrizeId());
dto.setCreateTime(date);
dtos.add(dto);
}
}
wishRealPrizeMapper.saveWishRealPrizeForList(dtos);
}else {
LoggerHelper.info(this.getClass(),"无抽奖");
}
}
private HashSet<Integer> getLuckUser(int count,int random){
HashSet<Integer> has = new HashSet<Integer>();
Integer i = 0;
for (int j = 1; j != 0; j++) {
i = new Random().nextInt(random);
has.add(i);
if (count == has.size()) {
break;
}
}
return has;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.polysoft.activity.mapper.WishRealPrizeMapper">
<insert id="saveWishRealPrizeForList" parameterType="list">
INSERT into t_wish_real_prize (
id,
user_id,
wish_id,
prize_id ,
create_time
)VALUES
<foreach collection="list" item="item" index="index" separator =",">
(
#{item.id},
#{item.userId},
#{item.wishId},
#{item.prizeId},
#{item.createTime}
)
</foreach>
</insert>
</mapper>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!