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

Commit d5c1738b authored by wangyifan's avatar wangyifan

douduo-码核验

parent 46ad3216
......@@ -62,6 +62,7 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_ANSWER_PHONE = "sweet:answer:phone:";
// doudou
public final static String REDIS_KEY_SWEET_DOUDOU_USER = "sweet:doudou:uid:";
public final static String REDIS_KEY_SWEET_DOUDOU_SCOPE_MOBILE = "sweet:doudou:scope:mobile:";
// 城市投票活动
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_LIST = ":StatList";
public final static String REDIS_KEY_SWEET_CITY_VOTE_CITY_CODE = ":cityCode:";
......
package com.liquidnet.service.sweet.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ApiModel(value = "SweetDouDouCheckParam", description = "入参")
@Data
public class SweetDouDouCheckParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 1, required = true, value = "核验人手机号", example = "15811112222")
@NotBlank(message = "authMobile不能为空")
private String authMobile;
@ApiModelProperty(position = 2, required = true, value = "doudouId", example = "234242423423423")
@NotBlank(message = "doudouId不能为空")
private String doudouId;
@ApiModelProperty(position = 3, required = true, value = "用户ID", example = "23453465353453")
@NotBlank(message = "userId不能为空")
private String userId;
}
......@@ -3,6 +3,7 @@ package com.liquidnet.service.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetDoudou;
import com.liquidnet.service.sweet.param.SweetDouDouCheckParam;
import com.liquidnet.service.sweet.param.SweetDouDouParam;
import com.liquidnet.service.sweet.vo.SweetDouDouVo;
......@@ -21,4 +22,6 @@ public interface ISweetDoudouService extends IService<SweetDoudou> {
ResponseDto<SweetDouDouVo> info();
ResponseDto create(@Valid SweetDouDouParam param);
ResponseDto check(SweetDouDouCheckParam param);
}
package com.liquidnet.service.sweet.vo;
import com.liquidnet.service.sweet.entity.SweetDoudou;
import com.liquidnet.service.sweet.entity.SweetDoudouScope;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class SweetDouDouScopeVo implements Serializable, Cloneable{
@ApiModelProperty("mobile")
private String mobile;
@ApiModelProperty("nickName")
private String nickName;
@ApiModelProperty("realName")
private String realName;
@ApiModelProperty("idCard")
private String idCard;
@ApiModelProperty("status")
private Integer status;
@ApiModelProperty("createdAt")
private LocalDateTime createdAt;
@ApiModelProperty("updatedAt")
private LocalDateTime updatedAt;
private static final SweetDouDouScopeVo obj = new SweetDouDouScopeVo();
public static SweetDouDouScopeVo getNew() {
try {
return (SweetDouDouScopeVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetDouDouScopeVo();
}
}
}
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetDoudouScope implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 手机号
*/
private String mobile;
/**
* 昵称
*/
private String nickName;
/**
* 真实姓名
*/
private String realName;
/**
* 身份证号码
*/
private String idCard;
/**
* 状态: 1-可用, 0-不可用
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 修改时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetDoudou;
import com.liquidnet.service.sweet.entity.SweetDoudouScope;
/**
* <p>
* doudou预约签名CD记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
public interface SweetDoudouScopeMapper extends BaseMapper<SweetDoudouScope> {
}
<?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.liquidnet.service.sweet.mapper.SweetDoudouScopeMapper">
</mapper>
......@@ -18,4 +18,22 @@ CREATE TABLE `sweet_doudou`
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT 'doudou预约签名CD记录表';
\ No newline at end of file
ROW_FORMAT = DYNAMIC COMMENT 'doudou预约签名CD记录表';
-- 20250604 doudou预约签名核验权限表
drop TABLE if exists `sweet_doudou_scope`;
CREATE TABLE `sweet_doudou_scope`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`mobile` varchar(50) NOT NULL COMMENT '核验人手机号',
`nick_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '昵称',
`real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '真实姓名',
`id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '身份证号码',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态 0 不可用 1可用',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT 'doudou预约签名核验权限表';
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.liquidnet.service.sweet.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.param.SweetDouDouCheckParam;
import com.liquidnet.service.sweet.param.SweetDouDouParam;
import com.liquidnet.service.sweet.service.ISweetDoudouService;
import com.liquidnet.service.sweet.vo.SweetDouDouVo;
......@@ -38,4 +39,10 @@ public class SweetDoudouController {
public ResponseDto create(@Valid @RequestBody SweetDouDouParam param) {
return iSweetDoudouService.create(param);
}
@PostMapping("/check")
@ApiOperation("核销")
public ResponseDto check(@Valid @RequestBody SweetDouDouCheckParam param){
return iSweetDoudouService.check(param);
}
}
......@@ -4,19 +4,24 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetDoudou;
import com.liquidnet.service.sweet.mapper.SweetDoudouMapper;
import com.liquidnet.service.sweet.param.SweetDouDouCheckParam;
import com.liquidnet.service.sweet.param.SweetDouDouParam;
import com.liquidnet.service.sweet.service.ISweetDoudouService;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetDouDouScopeVo;
import com.liquidnet.service.sweet.vo.SweetDouDouVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.LinkedList;
/**
......@@ -27,6 +32,7 @@ import java.util.LinkedList;
* @author jiangxiulong
* @since 2025-06-04
*/
@Slf4j
@Service
public class SweetDoudouServiceImpl extends ServiceImpl<SweetDoudouMapper, SweetDoudou> implements ISweetDoudouService {
@Autowired
......@@ -75,4 +81,46 @@ public class SweetDoudouServiceImpl extends ServiceImpl<SweetDoudouMapper, Sweet
return ResponseDto.success();
}
@Override
public ResponseDto check(SweetDouDouCheckParam param) {
if (!checkScope(param.getAuthMobile())) {
log.info("无权核验, authMoible: {}", param.getAuthMobile());
return ResponseDto.failure(ErrorMapping.get("20003"));
}
SweetDouDouVo vo = redisDataUtils.getSweetDouDou(param.getUserId());
if (null == vo) {
return ResponseDto.failure(ErrorMapping.get("90091"));
}
// 判断状态
if (vo.getStatus().equals(1)) {
return ResponseDto.failure(ErrorMapping.get("90092"));
} else if (vo.getStatus().equals(2)) {
return ResponseDto.failure(ErrorMapping.get("90093"));
} else if (vo.getStatus().equals(4)) {
return ResponseDto.failure(ErrorMapping.get("90094"));
}
vo.setStatus(4);
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_doudou.update"));
sqlsDataA.add(new Object[]{
vo.getStatus(), LocalDateTime.now(), vo.getDoudouId()
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_ANSWER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
redisDataUtils.setSweetDouDou(vo);
return ResponseDto.success();
}
private boolean checkScope(String authMobile) {
SweetDouDouScopeVo sweetDouDouScopeVo = redisDataUtils.getSweetDouDouScopeVo(authMobile);
return sweetDouDouScopeVo != null;
}
}
......@@ -469,6 +469,20 @@ public class RedisDataUtils {
return (SweetDouDouVo) redisUtil.get(redisKey);
}
public SweetDouDouScopeVo getSweetDouDouScopeVo(String mobile){
String redisKey = SweetConstant.REDIS_KEY_SWEET_DOUDOU_SCOPE_MOBILE.concat(mobile);
SweetDouDouScopeVo scopeVo = (SweetDouDouScopeVo) redisUtil.get(redisKey);
if (scopeVo == null) {
//TODO 从MySQL查询
}
return scopeVo;
}
public void setSweetDouDouScopeVo(SweetDouDouScopeVo sweetDouDouScopeVo){
String redisKey = SweetConstant.REDIS_KEY_SWEET_DOUDOU_SCOPE_MOBILE.concat(sweetDouDouScopeVo.getMobile());
redisUtil.set(redisKey, sweetDouDouScopeVo);
}
//草莓音乐节活动海报相关
public void setSweetMusician(SweetStrawberryParam sweetStrawberry) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_STRAWBERRY_POSTER.concat(sweetStrawberry.getUnionId());
......
40001=登录信息有误
40002=账号已在另一台设备登录
40003=登录已过期
# 特殊状态码
90081=获取用户信息失败
90082=您的积分账户余额不足!
20003=\u65E0\u6743\u6838\u9A8C
40001=\u767B\u5F55\u4FE1\u606F\u6709\u8BEF
40002=\u8D26\u53F7\u5DF2\u5728\u53E6\u4E00\u53F0\u8BBE\u5907\u767B\u5F55
40003=\u767B\u5F55\u5DF2\u8FC7\u671F
# \u7279\u6B8A\u72B6\u6001\u7801
90081=\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u5931\u8D25
90082=\u60A8\u7684\u79EF\u5206\u8D26\u6237\u4F59\u989D\u4E0D\u8DB3\uFF01
90091=\u672A\u67E5\u8BE2\u5230\u9884\u7EA6\u8BB0\u5F55
90092=\u672A\u5230\u89E3\u9501\u65F6\u95F4
90093=\u60A8\u672A\u4E2D\u7B7E
90094=\u5DF2\u88AB\u6838\u9500
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