提交 a5de638a 编写于 作者: C caathead

第二节 完成了基本的持久层构建架构

上级 077bf0dc
......@@ -122,7 +122,8 @@ CREATE TABLE `strategy` (
LOCK TABLES `strategy` WRITE;
/*!40000 ALTER TABLE `strategy` DISABLE KEYS */;
INSERT INTO `strategy` (`id`, `strategy_id`, `strategy_desc`, `create_time`, `update_time`)
INSERT INTO `strategy`
(`id`, `strategy_id`, `strategy_desc`, `create_time`, `update_time`)
VALUES
(1,100001,'抽奖策略','2023-12-09 09:37:19','2023-12-09 09:37:19');
UNLOCK TABLES;
......@@ -193,4 +194,34 @@ VALUES
(12,100001,106,2,'rule_luck_award','1,60','兜底奖品60以内随机积分','2023-12-09 10:30:43','2023-12-09 12:56:00'),
(13,100001,NULL,1,'rule_weight','6000,102,103,104,105,106,107,108,109','消耗6000分,必中奖范围','2023-12-09 10:30:43','2023-12-09 12:58:21'),
(14,100001,NULL,1,'rule_blacklist','1','黑名单抽奖,积分兜底','2023-12-09 12:59:45','2023-12-09 13:42:23');
UNLOCK TABLES;
\ No newline at end of file
UNLOCK TABLES;
CREATE TABLE `award` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`award_id` int(8) NOT NULL COMMENT '抽奖奖品ID - 内部流转使用',
`award_key` varchar(32) NOT NULL COMMENT '奖品对接标识 - 每一个都是一个对应的发奖策略',
`award_config` varchar(32) NOT NULL COMMENT '奖品配置信息',
`award_desc` varchar(128) NOT NULL COMMENT '奖品内容描述',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOCK TABLES `award` WRITE;
/*!40000 ALTER TABLE `award` DISABLE KEYS */;
INSERT INTO `award` (`id`, `award_id`, `award_key`, `award_config`, `award_desc`, `create_time`, `update_time`)
VALUES
(1,101,'user_credit_random','1,100','用户积分【优先透彻规则范围,如果没有则走配置】','2023-12-09 11:07:06','2023-12-09 11:21:31'),
(2,102,'openai_use_count','5','OpenAI 增加使用次数','2023-12-09 11:07:06','2023-12-09 11:12:59'),
(3,103,'openai_use_count','10','OpenAI 增加使用次数','2023-12-09 11:07:06','2023-12-09 11:12:59'),
(4,104,'openai_use_count','20','OpenAI 增加使用次数','2023-12-09 11:07:06','2023-12-09 11:12:58'),
(5,105,'openai_model','gpt-4','OpenAI 增加模型','2023-12-09 11:07:06','2023-12-09 11:12:01'),
(6,106,'openai_model','dall-e-2','OpenAI 增加模型','2023-12-09 11:07:06','2023-12-09 11:12:08'),
(7,107,'openai_model','dall-e-3','OpenAI 增加模型','2023-12-09 11:07:06','2023-12-09 11:12:10'),
(8,108,'openai_use_count','100','OpenAI 增加使用次数','2023-12-09 11:07:06','2023-12-09 11:12:55'),
(9,109,'openai_model','gpt-4,dall-e-2,dall-e-3','OpenAI 增加模型','2023-12-09 11:07:06','2023-12-09 11:12:39');
/*!40000 ALTER TABLE `award` ENABLE KEYS */;
UNLOCK TABLES;
25-03-02.22:16:34.489 [main ] INFO AwardDaoTest - Starting AwardDaoTest using Java 17.0.10 on xruicc with PID 4280 (started by 15505 in D:\MarketingIntegrationSystem\xfg-frame-archetype-lite-app)
25-03-02.22:16:34.490 [main ] INFO AwardDaoTest - The following 1 profile is active: "dev"
25-03-02.22:16:36.666 [main ] INFO AwardDaoTest - Started AwardDaoTest in 2.655 seconds (JVM running for 3.732)
25-03-02.22:16:37.163 [main ] INFO HikariDataSource - HikariPool-1 - Starting...
25-03-02.22:16:37.722 [main ] INFO HikariDataSource - HikariPool-1 - Start completed.
25-03-02.22:16:38.021 [main ] INFO AwardDaoTest - 测试结果:[{"awardConfig":"1,100","awardDesc":"用户积分【优先透彻规则范围,如果没有则走配置】","awardId":101,"awardKey":"user_credit_random"},{"awardConfig":"5","awardDesc":"OpenAI 增加使用次数","awardId":102,"awardKey":"openai_use_count"},{"awardConfig":"10","awardDesc":"OpenAI 增加使用次数","awardId":103,"awardKey":"openai_use_count"},{"awardConfig":"20","awardDesc":"OpenAI 增加使用次数","awardId":104,"awardKey":"openai_use_count"},{"awardConfig":"gpt-4","awardDesc":"OpenAI 增加模型","awardId":105,"awardKey":"openai_model"},{"awardConfig":"dall-e-2","awardDesc":"OpenAI 增加模型","awardId":106,"awardKey":"openai_model"},{"awardConfig":"dall-e-3","awardDesc":"OpenAI 增加模型","awardId":107,"awardKey":"openai_model"},{"awardConfig":"100","awardDesc":"OpenAI 增加使用次数","awardId":108,"awardKey":"openai_use_count"},{"awardConfig":"gpt-4,dall-e-2,dall-e-3","awardDesc":"OpenAI 增加模型","awardId":109,"awardKey":"openai_model"}]
25-03-02.22:16:38.034 [SpringApplicationShutdownHook] INFO HikariDataSource - HikariPool-1 - Shutdown initiated...
25-03-02.22:16:38.046 [SpringApplicationShutdownHook] INFO HikariDataSource - HikariPool-1 - Shutdown completed.
......@@ -17,7 +17,7 @@ spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/xfg_frame_archetype?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
url: jdbc:mysql://localhost:13306/big_market?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
pool-name: Retail_HikariCP
......@@ -30,9 +30,9 @@ spring:
connection-test-query: SELECT 1
type: com.zaxxer.hikari.HikariDataSource
#mybatis:
# mapper-locations: classpath:/mybatis/mapper/*.xml
# config-location: classpath:/mybatis/config/mybatis-config.xml
mybatis:
mapper-locations: classpath:/mybatis/mapper/*.xml
config-location: classpath:/mybatis/config/mybatis-config.xml
# 日志
logging:
......
<?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="cn.bugstack.infrastructure.dao.IAwardDao">
<resultMap id="dataMap" type="cn.bugstack.infrastructure.dao.po.Award">
<id column="id" property="id"/>
<result column="award_id" property="awardId"/>
<result column="award_key" property="awardKey"/>
<result column="award_config" property="awardConfig"/>
<result column="award_desc" property="awardDesc"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="queryAwardList" resultMap="dataMap">
select award_id, award_key, award_config, award_desc
from award
limit 10
</select>
<select id="queryAwardConfigByAwardId" parameterType="java.lang.Integer" resultType="java.lang.String">
select award_config from award where award_id = #{awardId}
</select>
<select id="queryAwardKeyByAwardId" parameterType="java.lang.Integer" resultType="java.lang.String">
select award_key from award where award_id = #{awardId}
</select>
</mapper>
<?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="cn.bugstack.infrastructure.dao.IStrategyAwardDao">
<resultMap id="dataMap" type="cn.bugstack.infrastructure.dao.po.StrategyAward">
<id column="id" property="id"/>
<result column="strategy_id" property="strategyId"/>
<result column="award_id" property="awardId"/>
<result column="award_title" property="awardTitle"/>
<result column="award_subtitle" property="awardSubtitle"/>
<result column="award_count" property="awardCount"/>
<result column="award_count_surplus" property="awardCountSurplus"/>
<result column="award_rate" property="awardRate"/>
<result column="rule_models" property="ruleModels"/>
<result column="sort" property="sort"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="queryStrategyAwardList" resultMap="dataMap">
select strategy_id
from strategy_award
limit 10
</select>
<select id="queryStrategyAwardListByStrategyId" parameterType="java.lang.Long" resultMap="dataMap">
select strategy_id, award_id, award_title, award_subtitle, award_count, award_count_surplus, award_rate, rule_models, sort
from strategy_award
where strategy_id = #{strategyId}
order by sort asc
</select>
<select id="queryStrategyAwardRuleModels" parameterType="cn.bugstack.infrastructure.dao.po.StrategyAward" resultType="java.lang.String">
select rule_models from strategy_award
where strategy_id = #{strategyId} and award_id = #{awardId}
</select>
<update id="updateStrategyAwardStock" parameterType="cn.bugstack.infrastructure.dao.po.StrategyAward">
update strategy_award
set award_count_surplus = award_count_surplus - 1
where strategy_id = #{strategyId} and award_id = #{awardId} and award_count_surplus > 0
</update>
<select id="queryStrategyAward" parameterType="cn.bugstack.infrastructure.dao.po.StrategyAward" resultMap="dataMap">
select strategy_id, award_id, award_title, award_subtitle, award_count, award_count_surplus, award_rate, rule_models, sort
from strategy_award
where strategy_id = #{strategyId} and award_id = #{awardId}
</select>
<select id="queryOpenActivityStrategyAwardList" resultMap="dataMap">
select strategy_id, award_id from strategy_award
where strategy_id in (select strategy_id from raffle_activity where state = 'open')
</select>
</mapper>
<?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="cn.bugstack.infrastructure.redis.dao.Xxx">
<mapper namespace="cn.bugstack.infrastructure.dao.IStrategyDao">
<resultMap id="CaseMap" type="cn.bugstack.infrastructure.redis.po.A">
<resultMap id="dataMap" type="cn.bugstack.infrastructure.dao.po.Strategy">
<id column="id" property="id"/>
<result column="strategy_id" property="strategyId"/>
<result column="strategy_desc" property="strategyDesc"/>
<result column="rule_models" property="ruleModels"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<insert id="insert" parameterType="cn.bugstack.infrastructure.redis.po.A">
INSERT INTO table(a,b,c) VALUES(#{a}, #{b}, #{c})
</insert>
<update id="update" parameterType="cn.bugstack.infrastructure.redis.po.A">
UPDATE table SET a = #{a} WHERE b = #{b}
</update>
<select id="queryStrategyList" resultMap="dataMap">
select strategy_id
from strategy
limit 10
</select>
<select id="queryEmployeeByEmployNumber" parameterType="java.lang.String" resultMap="CaseMap">
SELECT a, b, c
FROM table
WHERE a = #{a}
<select id="queryStrategyByStrategyId" parameterType="java.lang.Long" resultMap="dataMap">
select strategy_id, strategy_desc, rule_models
from strategy
where strategy_id = #{strategyId}
</select>
</mapper>
<?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="cn.bugstack.infrastructure.dao.IStrategyRuleDao">
<resultMap id="dataMap" type="cn.bugstack.infrastructure.dao.po.StrategyRule">
<id column="id" property="id"/>
<result column="strategy_id" property="strategyId"/>
<result column="award_id" property="awardId"/>
<result column="rule_type" property="ruleType"/>
<result column="rule_model" property="ruleModel"/>
<result column="rule_value" property="ruleValue"/>
<result column="rule_desc" property="ruleDesc"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="queryStrategyRuleList" resultMap="dataMap">
select strategy_id
from strategy_rule
limit 10
</select>
<select id="queryStrategyRule" parameterType="cn.bugstack.infrastructure.dao.po.StrategyRule" resultMap="dataMap">
select strategy_id, award_id, rule_type, rule_model, rule_value, rule_desc
from strategy_rule
where strategy_id = #{strategyId} and rule_model = #{ruleModel}
</select>
<select id="queryStrategyRuleValue" parameterType="cn.bugstack.infrastructure.dao.po.StrategyRule" resultType="java.lang.String">
select rule_value from strategy_rule
where strategy_id = #{strategyId} and rule_model = #{ruleModel}
<if test="awardId != null">
and award_id = #{awardId}
</if>
</select>
</mapper>
package cn.bugstack.test.infrastructure;
import cn.bugstack.infrastructure.dao.IAwardDao;
import cn.bugstack.infrastructure.dao.po.Award;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.List;
/**
* @author Fuzhengwei bugstack.cn @小傅哥
* @description 奖品持久化单元测试
* @create 2023-12-16 13:36
*/
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class AwardDaoTest {
@Resource
private IAwardDao awardDao;
@Test
public void test_queryAwardList() {
List<Award> awards = awardDao.queryAwardList();
log.info("测试结果:{}", JSON.toJSONString(awards));
}
}
//package cn.bugstack.test.infrastructure;
//
//import cn.bugstack.infrastructure.dao.IRaffleActivityAccountDayDao;
//import cn.bugstack.infrastructure.dao.po.RaffleActivityAccountDay;
//import lombok.extern.slf4j.Slf4j;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import javax.annotation.Resource;
//
///**
// * @author Fuzhengwei bugstack.cn @小傅哥
// * @description 活动日账户DAO
// * @create 2024-04-20 10:15
// */
//@Slf4j
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class RaffleActivityAccountDayDaoTest {
//
// @Resource
// private IRaffleActivityAccountDayDao raffleActivityAccountDayDao;
//
// @Test
// public void test_queryRaffleActivityAccountDayPartakeCount() {
// RaffleActivityAccountDay raffleActivityAccountDay = new RaffleActivityAccountDay();
// raffleActivityAccountDay.setActivityId(100301L);
// raffleActivityAccountDay.setUserId("xiaofuge");
// raffleActivityAccountDay.setDay(raffleActivityAccountDay.currentDay());
// Integer dayPartakeCount = raffleActivityAccountDayDao.queryRaffleActivityAccountDayPartakeCount(raffleActivityAccountDay);
// log.info("测试结果:{}", dayPartakeCount);
// }
//
//}
//package cn.bugstack.test.infrastructure;
//
//import cn.bugstack.infrastructure.dao.IRaffleActivityDao;
//import cn.bugstack.infrastructure.dao.po.RaffleActivity;
//import com.alibaba.fastjson2.JSON;
//import lombok.extern.slf4j.Slf4j;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import javax.annotation.Resource;
//
///**
// * @author Fuzhengwei bugstack.cn @小傅哥
// * @description 抽奖活动配置Dao测试
// * @create 2024-03-09 11:30
// */
//@Slf4j
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class RaffleActivityDaoTest {
//
// @Resource
// private IRaffleActivityDao raffleActivityDao;
//
// @Test
// public void test_queryRaffleActivityByActivityId() {
// RaffleActivity raffleActivity = raffleActivityDao.queryRaffleActivityByActivityId(100301L);
// log.info("测试结果:{}", JSON.toJSONString(raffleActivity));
// }
//
//}
//package cn.bugstack.test.infrastructure;
//
//import cn.bugstack.infrastructure.dao.IRaffleActivityOrderDao;
//import cn.bugstack.infrastructure.dao.po.RaffleActivityOrder;
//import com.alibaba.fastjson.JSON;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang.RandomStringUtils;
//import org.jeasy.random.EasyRandom;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import javax.annotation.Resource;
//import java.util.Date;
//import java.util.List;
//
///**
// * @author Fuzhengwei bugstack.cn @小傅哥
// * @description 抽奖活动订单测试
// * @create 2024-03-09 10:51
// */
//@Slf4j
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class RaffleActivityOrderDaoTest {
//
// @Resource
// private IRaffleActivityOrderDao raffleActivityOrderDao;
//
// private final EasyRandom easyRandom = new EasyRandom();
//
// @Test
// public void test_insert_random() {
// for (int i = 0; i < 5; i++) {
// RaffleActivityOrder raffleActivityOrder = new RaffleActivityOrder();
// // EasyRandom 可以通过指定对象类的方式,随机生成对象值。如;easyRandom.nextObject(String.class)、easyRandom.nextObject(RaffleActivityOrder.class)
// raffleActivityOrder.setUserId(easyRandom.nextObject(String.class));
// raffleActivityOrder.setActivityId(100301L);
// raffleActivityOrder.setActivityName("测试活动");
// raffleActivityOrder.setStrategyId(100006L);
// raffleActivityOrder.setOrderId(RandomStringUtils.randomNumeric(12));
// raffleActivityOrder.setOrderTime(new Date());
// raffleActivityOrder.setState("not_used");
// // 插入数据
// raffleActivityOrderDao.insert(raffleActivityOrder);
// }
// }
//
// @Test
// public void test_insert() {
// RaffleActivityOrder raffleActivityOrder = new RaffleActivityOrder();
// raffleActivityOrder.setUserId("xiaofuge");
// raffleActivityOrder.setActivityId(100301L);
// raffleActivityOrder.setActivityName("测试活动");
// raffleActivityOrder.setStrategyId(100006L);
// raffleActivityOrder.setOrderId(RandomStringUtils.randomNumeric(12));
// raffleActivityOrder.setOrderTime(new Date());
// raffleActivityOrder.setState("not_used");
// // 插入数据
// raffleActivityOrderDao.insert(raffleActivityOrder);
// }
//
// @Test
// public void test_queryRaffleActivityOrderByUserId() {
// String userId = "xiaofuge";
// List<RaffleActivityOrder> raffleActivityOrders = raffleActivityOrderDao.queryRaffleActivityOrderByUserId(userId);
// log.info("测试结果:{}", JSON.toJSONString(raffleActivityOrders));
// }
//
//}
//package cn.bugstack.test.infrastructure;
//
//import cn.bugstack.infrastructure.dao.IRuleTreeNodeDao;
//import cn.bugstack.infrastructure.dao.po.RuleTreeNode;
//import com.alibaba.fastjson.JSON;
//import lombok.extern.slf4j.Slf4j;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import javax.annotation.Resource;
//import java.util.List;
//
///**
// * @author Fuzhengwei bugstack.cn @小傅哥
// * @description 规则单元测试
// * @create 2024-04-20 09:40
// */
//@Slf4j
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class RuleTreeNodeDaoTest {
//
// @Resource
// private IRuleTreeNodeDao ruleTreeNodeDao;
//
// @Test
// public void test_queryRuleLocks() {
// List<RuleTreeNode> ruleTreeNodes = ruleTreeNodeDao.queryRuleLocks(new String[]{"tree_lock_1", "tree_lock_2"});
// log.info("测试结果:{}", JSON.toJSONString(ruleTreeNodes));
// }
//
//}
//package cn.bugstack.test.infrastructure;
//
//import cn.bugstack.domain.strategy.model.valobj.RuleTreeVO;
//import cn.bugstack.domain.strategy.model.valobj.StrategyAwardStockKeyVO;
//import cn.bugstack.domain.strategy.repository.IStrategyRepository;
//import cn.bugstack.infrastructure.redis.IRedisService;
//import cn.bugstack.types.common.Constants;
//import com.alibaba.fastjson2.JSON;
//import lombok.extern.slf4j.Slf4j;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.redisson.api.RBlockingQueue;
//import org.redisson.api.RDelayedQueue;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import javax.annotation.Resource;
//import java.util.concurrent.CountDownLatch;
//import java.util.concurrent.TimeUnit;
//
///**
// * @author Fuzhengwei bugstack.cn @小傅哥
// * @description 策略仓储测试
// * @create 2024-02-03 09:43
// */
//@Slf4j
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class StrategyRepositoryTest {
//
// @Resource
// private IStrategyRepository strategyRepository;
// @Resource
// private IRedisService redisService;
//
// @Test
// public void queryRuleTreeVOByTreeId() {
// RuleTreeVO ruleTreeVO = strategyRepository.queryRuleTreeVOByTreeId("tree_lock");
// log.info("测试结果:{}", JSON.toJSONString(ruleTreeVO));
// }
//
// @Test
// public void test_cacheStrategyAwardCount() {
// String cacheKey = Constants.RedisKey.STRATEGY_AWARD_COUNT_KEY + "300001" + Constants.UNDERLINE + "102";
// strategyRepository.cacheStrategyAwardCount(cacheKey, 10);
// }
//
// @Test
// public void test_subtractionAwardStock() {
// String cacheKey = Constants.RedisKey.STRATEGY_AWARD_COUNT_KEY + "300001" + Constants.UNDERLINE + "102";
// strategyRepository.subtractionAwardStock(cacheKey);
// }
//
// @Test
// public void test_getValue() {
// String cacheKey = Constants.RedisKey.STRATEGY_AWARD_COUNT_KEY + "300001" + Constants.UNDERLINE + "102";
// Integer value = redisService.getValue(cacheKey);
// log.info("测试结果:{}", value);
// }
//
// @Test
// public void test_queue() throws InterruptedException {
// String cacheKey = Constants.RedisKey.STRATEGY_AWARD_COUNT_QUERY_KEY;
// RBlockingQueue<StrategyAwardStockKeyVO> blockingQueue = redisService.getBlockingQueue(cacheKey);
// RDelayedQueue<StrategyAwardStockKeyVO> delayedQueue = redisService.getDelayedQueue(blockingQueue);
// delayedQueue.offer(StrategyAwardStockKeyVO.builder()
// .strategyId(100001L)
// .awardId(102)
// .build(), 3, TimeUnit.SECONDS);
//
// new CountDownLatch(1).await();
// }
//
//}
//package cn.bugstack.test.infrastructure.elasticsearch;
//
//import cn.bugstack.infrastructure.elasticsearch.IElasticSearchUserRaffleOrderDao;
//import cn.bugstack.infrastructure.elasticsearch.po.UserRaffleOrder;
//import com.alibaba.fastjson.JSON;
//import lombok.extern.slf4j.Slf4j;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import javax.annotation.Resource;
//import java.util.List;
//
//@Slf4j
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class ElasticSearchUserRaffleOrderDaoTest {
//
// @Resource
// private IElasticSearchUserRaffleOrderDao elasticSearchUserRaffleOrderDao;
//
// @Test
// public void test_queryUserRaffleOrderList() {
// List<UserRaffleOrder> userRaffleOrders = elasticSearchUserRaffleOrderDao.queryUserRaffleOrderList();
// log.info("测试结果:{}", JSON.toJSONString(userRaffleOrders));
// }
//
//}
package cn.bugstack.infrastructure.dao;
import cn.bugstack.infrastructure.dao.po.Award;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IAwardDao {
List<Award> queryAwardList();
String queryAwardConfigByAwardId(Integer awardId);
String queryAwardKeyByAwardId(Integer awardId);
}
package cn.bugstack.infrastructure.dao;
import cn.bugstack.infrastructure.dao.po.StrategyAward;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IStrategyAwardDao {
List<StrategyAward> queryStrategyAwardList();
List<StrategyAward> queryStrategyAwardListByStrategyId(Long strategyId);
String queryStrategyAwardRuleModels(StrategyAward strategyAward);
void updateStrategyAwardStock(StrategyAward strategyAward);
StrategyAward queryStrategyAward(StrategyAward strategyAwardReq);
List<StrategyAward> queryOpenActivityStrategyAwardList();
}
package cn.bugstack.infrastructure.dao;
import cn.bugstack.infrastructure.dao.po.Strategy;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IStrategyDao {
List<Strategy> queryStrategyList();
Strategy queryStrategyByStrategyId(Long strategyId);
}
package cn.bugstack.infrastructure.dao;
import cn.bugstack.infrastructure.dao.po.StrategyRule;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IStrategyRuleDao {
List<StrategyRule> queryStrategyRuleList();
StrategyRule queryStrategyRule(StrategyRule strategyRuleReq);
String queryStrategyRuleValue(StrategyRule strategyRule);
}
package cn.bugstack.infrastructure.dao.po;
import lombok.Data;
import java.util.Date;
@Data
public class Award {
private Integer id;
private Integer awardId;
private String awardKey;
private String awardConfig;
private String awardDesc;
private Date createTime;
private Date updateTime;
}
package cn.bugstack.infrastructure.dao.po;
import lombok.Data;
import java.util.Date;
/**
*抽奖策略
*/
@Data
public class Strategy {
private Long id;
private Long strategyId;
private String strategyDesc;
private Date createTime;
private Date updateTime;
}
package cn.bugstack.infrastructure.dao.po;
import lombok.Data;
import java.util.Date;
import java.math.BigDecimal;
@Data
public class StrategyAward {
/**
* 自增ID
*/
private Long id;
/**
* 抽奖策略ID
*/
private Long strategyId;
/**
* 抽奖奖品ID - 内部流转使用
*/
private Integer awardId;
/**
* 抽奖奖品标题
*/
private String awardTitle;
/**
* 抽奖奖品副标题
*/
private String awardSubtitle;
/**
* 奖品库存总量
*/
private Integer awardCount;
/**
* 奖品库存剩余
*/
private Integer awardCountSurplus;
/**
* 奖品中奖概率
*/
private BigDecimal awardRate;
/**
* 规则模型,rule配置的模型同步到此表,便于使用
*/
private String ruleModels;
/**
* 排序
*/
private Integer sort;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
}
package cn.bugstack.infrastructure.dao.po;
import lombok.Data;
import java.util.Date;
@Data
public class StrategyRule {
private Long id;
private Integer strategyId;
private Integer awardId;
private Byte ruleType;
private String ruleModel;
private String ruleValue;
private String ruleDesc;
private Date createTime;
private Date updateTime;
}
/**
* 持久化对象;XxxPO 最后的 PO 是大写,UserPO
*/
package cn.bugstack.infrastructure.dao.po;
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册