记得上下班打卡 | git大法好,push需谨慎

Commit 6ad7b03b authored by jiangxiulong's avatar jiangxiulong

防疫答题

parent 722ad314
package com.liquidnet.service.sweet.dto.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
@ApiModel(value = "SweetAntigenicQuestionParam", description = "防疫答题记录入参")
@Data
public class SweetAntigenicQuestionParam implements Serializable {
private static final long serialVersionUID = 9038992103808199663L;
@ApiModelProperty(position = 10, required = true, value = "openId", example = "openId")
@NotBlank(message = "openId不能为空")
private String openId;
@ApiModelProperty(position = 10, required = true, value = "unionId", example = "unionId")
@NotBlank(message = "unionId不能为空")
private String unionId;
@ApiModelProperty(position = 10, required = true, value = "姓名", example = "姓名")
@NotBlank(message = "姓名不能为空")
private String nickname;
@ApiModelProperty(position = 10, required = true, value = "居住地址", example = "居住地址")
@NotBlank(message = "居住地址不能为空")
private String address;
@ApiModelProperty(position = 10, required = true, value = "联系电话", example = "15811009011")
@NotBlank(message = "联系电话不能为空")
private String phone;
@ApiModelProperty(position = 10, required = true, value = "紧急联系人电话", example = "15811009011")
@NotBlank(message = "紧急联系人电话不能为空")
private String urgentPhone;
@ApiModelProperty(position = 10, required = true, value = "keyword1", example = "1")
@NotNull(message = "keyword1不能为空") @Min(value = 1, message = "keyword1无效") @Max(value = 2, message = "keyword1无效")
private Integer keyword1;
@ApiModelProperty(position = 10, required = true, value = "keyword2", example = "1")
@NotNull(message = "keyword2不能为空") @Min(value = 1, message = "keyword2无效") @Max(value = 2, message = "keyword2无效")
private Integer keyword2;
@ApiModelProperty(position = 10, required = true, value = "keyword3", example = "1")
@NotNull(message = "keyword3不能为空") @Min(value = 1, message = "keyword3无效") @Max(value = 2, message = "keyword3无效")
private Integer keyword3;
@ApiModelProperty(position = 10, required = true, value = "keyword4", example = "1")
@NotNull(message = "keyword4不能为空") @Min(value = 1, message = "keyword4无效") @Max(value = 2, message = "keyword4无效")
private Integer keyword4;
@ApiModelProperty(position = 10, required = true, value = "keyword5", example = "1")
@NotNull(message = "keyword5不能为空") @Min(value = 1, message = "keyword5无效") @Max(value = 2, message = "keyword5无效")
private Integer keyword5;
@ApiModelProperty(position = 10, required = true, value = "keyword6", example = "1")
@NotNull(message = "keyword6不能为空") @Min(value = 1, message = "keyword6无效") @Max(value = 2, message = "keyword6无效")
private Integer keyword6;
@ApiModelProperty(position = 10, required = true, value = "keyword7", example = "1")
@NotNull(message = "keyword7不能为空") @Min(value = 1, message = "keyword7无效") @Max(value = 3, message = "keyword7无效")
private Integer keyword7;
}
...@@ -84,6 +84,7 @@ public class MQConst { ...@@ -84,6 +84,7 @@ public class MQConst {
SWEET_APPLET_USER_INSERT_DRAW("sweet:stream:rk.sweetAppletUserInsert", "group.sweetAppletUserInsert", "小程序登录记录用户解密后信息"), SWEET_APPLET_USER_INSERT_DRAW("sweet:stream:rk.sweetAppletUserInsert", "group.sweetAppletUserInsert", "小程序登录记录用户解密后信息"),
SWEET_TEMPLATE_MSG("sweet:stream:rk.sweetTemplateMsg", "group.sweetTemplateMsg", "发送模版消息"), SWEET_TEMPLATE_MSG("sweet:stream:rk.sweetTemplateMsg", "group.sweetTemplateMsg", "发送模版消息"),
SWEET_CITY_VOTE_DRAW("sweet:stream:rk.cityVote", "group.cityVote", "用户投票记录"), SWEET_CITY_VOTE_DRAW("sweet:stream:rk.cityVote", "group.cityVote", "用户投票记录"),
SWEET_ANTIGENIC_QUESTION_DRAW("sweet:stream:rk.antigenicQuestion", "group.antigenicQuestion", "防疫答题"),
; ;
private final String key; private final String key;
......
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 防疫答题表
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetAntigenicQuestion implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* question_id
*/
private String questionId;
/**
* openId
*/
@TableField("openId")
private String openId;
/**
* unionId
*/
@TableField("unionId")
private String unionId;
/**
* 姓名
*/
private String nickname;
/**
* 居住地址
*/
private String address;
/**
* 联系电话
*/
private String phone;
/**
* 紧急联系人电话
*/
private String urgentPhone;
/**
* 1有 2没有
*/
private Integer keyword1;
/**
* 1是 2否
*/
private Integer keyword2;
/**
* 1是 2否
*/
private Integer keyword3;
/**
* 1是 2否
*/
private Integer keyword4;
/**
* 1是 2否
*/
private Integer keyword5;
/**
* 1是 2否
*/
private Integer keyword6;
/**
* 1两针均已接种 2已接种一针 3未接种
*/
private Integer keyword7;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.sweet.mapper;
import com.liquidnet.service.sweet.entity.SweetAntigenicQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 防疫答题表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
public interface SweetAntigenicQuestionMapper extends BaseMapper<SweetAntigenicQuestion> {
}
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerAntigenicQuestionRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_ANTIGENIC_QUESTION_DRAW;
@Configuration
public class ConsumerAntigenicQuestionRedisStreamConfig {
@Autowired
ConsumerAntigenicQuestionRdsReceiver consumerAntigenicQuestionRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveSqlAntigenicQuestion(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_ANTIGENIC_QUESTION_DRAW.getGroup(), SWEET_ANTIGENIC_QUESTION_DRAW.name() + t),
StreamOffset.create(SWEET_ANTIGENIC_QUESTION_DRAW.getKey(), ReadOffset.lastConsumed()), consumerAntigenicQuestionRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlAntigenicQuestion(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAntigenicQuestion(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAntigenicQuestion2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAntigenicQuestion(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAntigenicQuestion3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAntigenicQuestion(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.sweet.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerAntigenicQuestionRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_ANTIGENIC_QUESTION_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_ANTIGENIC_QUESTION_DRAW.getGroup();
}
}
...@@ -539,3 +539,31 @@ CREATE TABLE `sweet_remind` ...@@ -539,3 +539,31 @@ CREATE TABLE `sweet_remind`
COLLATE utf8mb4_unicode_ci COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '提醒记录表'; ROW_FORMAT = DYNAMIC COMMENT '提醒记录表';
-- 防疫答题
drop TABLE if exists `sweet_antigenic_question`;
CREATE TABLE `sweet_antigenic_question`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`question_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'question_id',
`openId` varchar(255) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(255) NOT NULL DEFAULT '' COMMENT 'unionId',
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '姓名',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '居住地址',
`phone` varchar(11) NOT NULL DEFAULT '' COMMENT '联系电话',
`urgent_phone` varchar(11) NOT NULL DEFAULT '' COMMENT '紧急联系人电话',
`keyword1` tinyint NOT NULL DEFAULT 0 COMMENT '1有 2没有',
`keyword2` tinyint NOT NULL DEFAULT 0 COMMENT '1是 2否',
`keyword3` tinyint NOT NULL DEFAULT 0 COMMENT '1是 2否',
`keyword4` tinyint NOT NULL DEFAULT 0 COMMENT '1是 2否',
`keyword5` tinyint NOT NULL DEFAULT 0 COMMENT '1是 2否',
`keyword6` tinyint NOT NULL DEFAULT 0 COMMENT '1是 2否',
`keyword7` tinyint NOT NULL DEFAULT 0 COMMENT '1两针均已接种 2已接种一针 3未接种',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_question_id` (`question_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '防疫答题表';
...@@ -75,6 +75,12 @@ ...@@ -75,6 +75,12 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-sweet-do</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.liquidnet.service.sweet.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.param.SweetAntigenicQuestionParam;
import com.liquidnet.service.sweet.service.ISweetAntigenicQuestionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* <p>
* 防疫答题表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Api(tags = "活动-防疫答题")
@RestController
@RequestMapping("/AntigenicQuestion")
public class SweetAntigenicQuestionController {
@Autowired
private ISweetAntigenicQuestionService sweetAntigenicQuestionService;
@PostMapping("create")
@ApiOperation("添加答题记录")
public ResponseDto<Boolean> add(@Valid @RequestBody SweetAntigenicQuestionParam param) {
return sweetAntigenicQuestionService.create(param);
}
}
...@@ -5,10 +5,11 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,10 +5,11 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ApiModel(value = "SweetCityVoteParam", description = "用户投票记录入参") @ApiModel(value = "SweetCityVoteParam", description = "用户投票记录入参")
@Data @Data
public class SweetCityVoteParam implements java.io.Serializable { public class SweetCityVoteParam implements Serializable {
private static final long serialVersionUID = -2626425843975309892L; private static final long serialVersionUID = -2626425843975309892L;
......
package com.liquidnet.service.sweet.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.param.SweetAntigenicQuestionParam;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.sweet.entity.SweetAntigenicQuestion;
/**
* <p>
* 防疫答题表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
public interface ISweetAntigenicQuestionService extends IService<SweetAntigenicQuestion> {
ResponseDto<Boolean> create(SweetAntigenicQuestionParam param);
}
package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.dto.param.SweetAntigenicQuestionParam;
import com.liquidnet.service.sweet.entity.SweetAntigenicQuestion;
import com.liquidnet.service.sweet.mapper.SweetAntigenicQuestionMapper;
import com.liquidnet.service.sweet.service.ISweetAntigenicQuestionService;
import com.liquidnet.service.sweet.utils.QueueUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.LinkedList;
/**
* <p>
* 防疫答题表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Service
public class SweetAntigenicQuestionServiceImpl extends ServiceImpl<SweetAntigenicQuestionMapper, SweetAntigenicQuestion> implements ISweetAntigenicQuestionService {
@Autowired
QueueUtils queueUtils;
@Override
public ResponseDto<Boolean> create(SweetAntigenicQuestionParam param) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_antigenic_question.insert"));
sqlsDataA.add(new Object[]{
IDGenerator.nextSnowId(), param.getOpenId(), param.getUnionId(), param.getNickname(), param.getAddress(), param.getPhone(),
param.getUrgentPhone(), param.getKeyword1(), param.getKeyword2(), param.getKeyword3(), param.getKeyword4(), param.getKeyword5(),
param.getKeyword6(), param.getKeyword7()
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_ANTIGENIC_QUESTION_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
return ResponseDto.success();
}
}
...@@ -52,4 +52,6 @@ sweet_applet_user.insert=INSERT INTO sweet_applet_user (user_id,openId,unionId,g ...@@ -52,4 +52,6 @@ sweet_applet_user.insert=INSERT INTO sweet_applet_user (user_id,openId,unionId,g
# --------------------------用户投票记录-------------------------- # --------------------------用户投票记录--------------------------
sweet_city_vote.insert=INSERT INTO sweet_city_vote (vote_id,phone,openId,unionId,city_code,city_name,day_time) VALUES (?,?,?,?,?,?,?) sweet_city_vote.insert=INSERT INTO sweet_city_vote (vote_id,phone,openId,unionId,city_code,city_name,day_time) VALUES (?,?,?,?,?,?,?)
sweet_city_vote_stat.insert=INSERT INTO sweet_city_vote_stat (stat_id,city_code,city_name,vote_num) VALUES (?,?,?,?) sweet_city_vote_stat.insert=INSERT INTO sweet_city_vote_stat (stat_id,city_code,city_name,vote_num) VALUES (?,?,?,?)
sweet_city_vote_stat.update=UPDATE sweet_city_vote_stat SET vote_num = IFNULL(vote_num, 0) + 1, updated_at = ? WHERE city_code = ? sweet_city_vote_stat.update=UPDATE sweet_city_vote_stat SET vote_num = IFNULL(vote_num, 0) + 1, updated_at = ? WHERE city_code = ?
\ No newline at end of file # --------------------------防疫答题--------------------------
sweet_antigenic_question.insert=INSERT INTO sweet_antigenic_question (question_id,openId,unionId,nickname,address,phone,urgent_phone,keyword1,keyword2,keyword3,keyword4,keyword5,keyword6,keyword7) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment