Commit 59f8c1d4 by lvyp

红包雨-红包发放

1 parent 17ac7f96
......@@ -23,4 +23,5 @@ public interface ActivityMapper extends BaseMapper<ActItemDto> {
int saveRedRain(@Param("list") List<AddRedRainDto> list);
List<RedRainVO> queryRedRainList(QueryRedRainDto dto);
int updateRedPackage(List<AddRedRainDto> dto);
int updateRedPackageForCattle(List<AddRedRainDto> dto);
}
package com.polysoft.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.polysoft.activity.model.dto.CattleBrandDto;
import com.polysoft.activity.model.vo.CattleBrandVO;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper
public interface CattleBrandMapper extends BaseMapper<CattleBrandDto> {
List<CattleBrandVO> queryCattleBrandList();
}
......@@ -3,7 +3,7 @@ package com.polysoft.activity.mapper;
import com.polysoft.activity.model.dto.WechatTokenDto;
import com.polysoft.activity.model.vo.UserInfoVO;
import com.polysoft.activity.model.vo.WechatToken;
import org.apache.ibatis.annotations.Mapper;
import org.mapstruct.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......
......@@ -6,7 +6,7 @@ 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.mapstruct.Mapper;
import java.util.List;
......
......@@ -10,9 +10,14 @@ import lombok.Data;
@Data
@TableName(value = "act_item")
public class ActItemDto {
//主键
private Long id;
//活动名称
private String activityName;
//活动开始时间
private String startTime;
//活动结束时间
private String emdTime;
//活动状态 0 未开始 1 正在进行 2 即将开始 3 已结束
private int activityStatus;
}
......@@ -3,6 +3,7 @@ package com.polysoft.activity.model.dto;
import cn.hutool.core.date.DateUtil;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -15,7 +16,7 @@ public class AddRedRainDto {
//用户主键
private Long userId ;
//红包金额
private String redAmount ;
private BigDecimal redAmount ;
//红包类型 0 普通红包 1 牛牌
private int redType ;
//牛牌主键
......
package com.polysoft.activity.model.dto;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import lombok.Data;
@Data
@TableName("t_cattle_brand")
public class CattleBrandDto {
private Long cattleId;
private int brandType;
private String brandName;
}
package com.polysoft.activity.model.param;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
......@@ -9,7 +10,10 @@ import lombok.Data;
*/
@Data
public class AddRedRainParam {
@ApiModelProperty("用户主键")
private Long userId;
@ApiModelProperty("用户主键")
private int redNum;
@ApiModelProperty("用户主键")
private int batchNum;
}
package com.polysoft.activity.model.vo;
import lombok.Data;
@Data
public class CattleBrandVO {
private Long cattleId;
private int brandType;
private String brandName;
}
......@@ -2,6 +2,8 @@ package com.polysoft.activity.model.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author lvyp
* @date 2021/1/27
......@@ -12,5 +14,5 @@ public class QueryRealPrizeVO {
private String prizeName;
private String luckDrawDate;
private String prizeNum;
private String prizePrice;
private BigDecimal prizePrice;
}
......@@ -3,6 +3,7 @@ package com.polysoft.activity.model.vo;
import cn.hutool.core.date.DateUtil;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -15,7 +16,7 @@ public class RedRainVO {
//用户主键
private Long userId ;
//红包金额
private String redAmount ;
private BigDecimal redAmount ;
//红包类型 0 普通红包 1 牛牌
private int redType ;
//牛牌主键
......
package com.polysoft.activity.service;
import com.polysoft.activity.model.vo.CattleBrandVO;
import com.polysoft.activity.utils.ApiResult;
import java.util.List;
public interface CattleBrandService {
ApiResult queryCattleBrandList();
}
package com.polysoft.activity.service.impl;
import com.polysoft.activity.mapper.CattleBrandMapper;
import com.polysoft.activity.service.CattleBrandService;
import com.polysoft.activity.utils.ApiResult;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class CattleBrandServiceImpl implements CattleBrandService {
@Resource
private CattleBrandMapper cattleBrandMapper;
@Override
public ApiResult queryCattleBrandList() {
return ApiResult.ok(cattleBrandMapper.queryCattleBrandList());
}
}
......@@ -6,13 +6,16 @@ import com.polysoft.activity.common.utils.BeanTransferUtils;
import com.polysoft.activity.mapper.ActivityMapper;
import com.polysoft.activity.model.dto.AddRedRainDto;
import com.polysoft.activity.model.dto.QueryRedRainDto;
import com.polysoft.activity.model.vo.CattleBrandVO;
import com.polysoft.activity.model.vo.RedRainVO;
import com.polysoft.activity.service.CattleBrandService;
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.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
......@@ -31,9 +34,11 @@ public class InitRedPackageTask {
@Resource
private ActivityMapper activityMapper;
@Resource
private CattleBrandService cattleBrandService;
// @Scheduled(initialDelay = 10000, fixedRate = 1*15*60*1000)
@Scheduled( cron = "20 59 17 * * ? ")
@Scheduled( cron = "50 06 22 * * ? ")
public void execute() {
sendWechat();
}
......@@ -57,6 +62,7 @@ public class InitRedPackageTask {
// if(currentTime > batch3 ){
// batchNum = 3;
// }
LoggerHelper.debug(this.getClass(),"任务开始");
//查询出没有初始化的红包
int batchNum = 1;
double totalMoney = 5000.00;
......@@ -73,7 +79,7 @@ public class InitRedPackageTask {
int i = 0;
for (Integer s : set) {
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list.get(s),AddRedRainDto.class);
addRedRainDto.setRedAmount(redAmount[i]+"");
addRedRainDto.setRedAmount(BigDecimal.valueOf(redAmount[i]));
addRedRainDto.setRedType(1);
addRedRainDto.setIsEnble(1);
batchList.add(addRedRainDto);
......@@ -85,12 +91,11 @@ public class InitRedPackageTask {
if(2==2){
//获取红包总数
QueryRedRainDto dto = new QueryRedRainDto();
List<AddRedRainDto> batchList = new ArrayList<>();
dto.setBatchNum(batchNum);
List<RedRainVO> list = activityMapper.queryRedRainList(dto);
List<AddRedRainDto> batchList2 = new ArrayList<>();
//获取未结算的红包数
QueryRedRainDto dto2 = new QueryRedRainDto();
List<AddRedRainDto> batchList2 = new ArrayList<>();
dto2.setIsEnble(0);
dto2.setBatchNum(batchNum);
List<RedRainVO> list2 = activityMapper.queryRedRainList(dto);
......@@ -101,8 +106,8 @@ public class InitRedPackageTask {
HashSet<Integer> set = getLuckUser(redNum,list2.size());
int i = 0;
for (Integer s : set) {
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list.get(s),AddRedRainDto.class);
addRedRainDto.setRedAmount(redAmount[i]+"");
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list2.get(s),AddRedRainDto.class);
addRedRainDto.setRedAmount(BigDecimal.valueOf(redAmount[i]));
addRedRainDto.setRedType(1);
addRedRainDto.setIsEnble(1);
batchList2.add(addRedRainDto);
......@@ -113,24 +118,22 @@ public class InitRedPackageTask {
if(3==3){
//获取红包总数
QueryRedRainDto dto = new QueryRedRainDto();
List<AddRedRainDto> batchList = new ArrayList<>();
dto.setBatchNum(batchNum);
List<RedRainVO> list = activityMapper.queryRedRainList(dto);
List<AddRedRainDto> batchList2 = new ArrayList<>();
//获取未结算的红包数
QueryRedRainDto dto2 = new QueryRedRainDto();
List<AddRedRainDto> batchList2 = new ArrayList<>();
dto2.setIsEnble(0);
dto2.setBatchNum(batchNum);
List<RedRainVO> list2 = activityMapper.queryRedRainList(dto);
//前65%红包
int redNum = (int)(list.size()*0.65);
double [] redAmount = getMoney(5000.00*0.4,redNum);
double [] redAmount = getMoney(5000.00*0.5,redNum);
HashSet<Integer> set = getLuckUser(redNum,list2.size());
int i = 0;
for (Integer s : set) {
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list.get(s),AddRedRainDto.class);
addRedRainDto.setRedAmount(redAmount[i]+"");
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list2.get(s),AddRedRainDto.class);
addRedRainDto.setRedAmount(BigDecimal.valueOf(redAmount[i]));
addRedRainDto.setRedType(1);
addRedRainDto.setIsEnble(1);
batchList2.add(addRedRainDto);
......@@ -141,32 +144,31 @@ public class InitRedPackageTask {
if(4==4){
//获取红包总数
QueryRedRainDto dto = new QueryRedRainDto();
List<AddRedRainDto> batchList = new ArrayList<>();
dto.setBatchNum(batchNum);
List<RedRainVO> list = activityMapper.queryRedRainList(dto);
List<AddRedRainDto> batchList2 = new ArrayList<>();
//获取未结算的红包数
QueryRedRainDto dto2 = new QueryRedRainDto();
List<AddRedRainDto> batchList2 = new ArrayList<>();
dto2.setIsEnble(0);
dto2.setBatchNum(batchNum);
List<RedRainVO> list2 = activityMapper.queryRedRainList(dto);
//前5%红包
//前5%红包牛牌
int redNum =list2.size();
double [] redAmount = getMoney(5000.00*0.10,redNum);
HashSet<Integer> set = getLuckUser(redNum,list2.size());
List<CattleBrandVO> cattleList = (List<CattleBrandVO>) cattleBrandService.queryCattleBrandList().get("data");
int i = 0;
for (Integer s : set) {
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list.get(s),AddRedRainDto.class);
addRedRainDto.setRedAmount(redAmount[i]+"");
addRedRainDto.setRedType(1);
AddRedRainDto addRedRainDto = BeanTransferUtils.transfer(list2.get(s),AddRedRainDto.class);
int k = new Random().nextInt(4);
addRedRainDto.setCattleBrandId(cattleList.get(k).getCattleId());
addRedRainDto.setRedType(2);
addRedRainDto.setIsEnble(1);
batchList2.add(addRedRainDto);
i++;
}
activityMapper.updateRedPackage(batchList2);
activityMapper.updateRedPackageForCattle(batchList2);
}
LoggerHelper.debug(this.getClass(),"任务结束");
}
private HashSet<Integer> getLuckUser(int count, int random){
HashSet<Integer> has = new HashSet<Integer>();
......
......@@ -47,7 +47,31 @@
</foreach>
</where>
</update>
<update id="updateRedPackageForCattle" parameterType="java.util.List">
update t_red_rain
<trim prefix="set" suffixOverrides=",">
<trim prefix=" cattle_brand_id = case" suffix="end,">
<foreach collection="list" item="item" index="index">
when red_id=#{item.redId} then #{item.cattleBrandId}
</foreach>
</trim>
<trim prefix=" red_type = case" suffix="end,">
<foreach collection="list" item="item" index="index">
when red_id=#{item.redId} then #{item.redType}
</foreach>
</trim>
<trim prefix=" is_enble = case" suffix="end,">
<foreach collection="list" item="item" index="index">
when red_id=#{item.redId} then #{item.isEnble}
</foreach>
</trim>
</trim>
<where>
<foreach collection="list" separator="or" item="item" index="index">
red_id=#{item.redId}
</foreach>
</where>
</update>
<select id="queryActivityInfo" resultType="com.polysoft.activity.model.vo.ActItemVO">
SELECT
id,
......@@ -68,17 +92,18 @@
red_type,
is_enble
from t_red_rain where
<if test="isEnble !=null and isEnble !='' ">
is_enble = #{isEnble}
1=1
<if test="isEnble !=null ">
and is_enble = #{isEnble}
</if>
<if test="userId !=null and userId !='' ">
user_id = #{userId}
<if test="userId !=null ">
and user_id = #{userId}
</if>
<if test="redType !=null and redType !='' ">
red_type = #{redType}
<if test="redType !=null ">
and red_type = #{redType}
</if>
<if test="batchNum !=null and batchNum !='' ">
batch_num = #{batchNum}
<if test="batchNum !=null ">
and batch_num = #{batchNum}
</if>
order by red_id asc
</select>
......
<?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.CattleBrandMapper">
<select id="queryCattleBrandList" resultType="com.polysoft.activity.model.vo.CattleBrandVO">
select
cattle_id,
brand_type,
brand_name
from t_cattle_brand
</select>
</mapper>
......@@ -23,10 +23,10 @@
<if test="pushDate !=null and pushDate != '' ">
and push_date = #{pushDate}
</if>
<if test="wishId != null and wishId != '' ">
<if test="wishId != null ">
and wish_id = #{wishId}
</if>
<if test="userId != null and userId != '' ">
<if test="userId != null ">
and user_id = #{userId}
</if>
</where>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!