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

Commit 581e9a32 authored by 姜秀龙's avatar 姜秀龙

Merge branch 'jxl-doudou' into 'master'

Jxl doudou

See merge request !388
parents e46da29e 00f2b58f
......@@ -60,6 +60,9 @@ public class SweetConstant {
public static final String REDIS_KEY_SWEET_SEND_COUPON = "sweet:integralActivity:coupon:send:";
// 答题活动
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 = "10000000000")
@NotBlank(message = "authMobile不能为空")
private String authMobile;
@ApiModelProperty(position = 2, required = true, value = "doudouId", example = "5223713433667502081163230")
@NotBlank(message = "doudouId不能为空")
private String doudouId;
@ApiModelProperty(position = 3, required = true, value = "用户ID", example = "937724050260131847782985")
@NotBlank(message = "userId不能为空")
private String userId;
}
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 = "SweetDouDouParam", description = "入参")
@Data
public class SweetDouDouParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 10, required = true, value = "观演人姓名", example = "张三")
@NotBlank(message = "username不能为空")
private String username;
@ApiModelProperty(position = 11, required = true, value = "观演人手机号", example = "15811112222")
@NotBlank(message = "phone不能为空")
private String phone;
@ApiModelProperty(position = 12, required = true, value = "购买平台", example = "大麦")
@NotBlank(message = "platform不能为空")
private String platform;
@ApiModelProperty(position = 13, required = true, value = "购买订单号", example = "23424353477473")
@NotBlank(message = "orderCodee不能为空")
private String orderCode;
@ApiModelProperty(position = 14, required = true, value = "想给doudou说的话", example = "我爱你啦啦啦")
private String mark;
}
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;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
/**
* <p>
* doudou预约签名CD记录表 服务类
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
public interface ISweetDoudouService extends IService<SweetDoudou> {
ResponseDto<SweetDouDouVo> info();
ResponseDto<SweetDouDouVo> create(@Valid SweetDouDouParam param);
ResponseDto check(SweetDouDouCheckParam param);
ResponseDto<SweetDouDouVo> detail(SweetDouDouCheckParam param);
boolean winningUpload(MultipartFile file);
}
package com.liquidnet.service.sweet.vo;
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();
}
}
public SweetDouDouScopeVo copy(SweetDoudouScope source) {
if (null == source) return this;
this.mobile = source.getMobile();
this.nickName = source.getNickName();
this.realName = source.getRealName();
this.idCard = source.getIdCard();
this.status = source.getStatus();
this.createdAt = source.getCreatedAt();
this.updatedAt = source.getUpdatedAt();
return this;
}
}
package com.liquidnet.service.sweet.vo;
import com.liquidnet.service.sweet.entity.SweetDoudou;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class SweetDouDouVo implements Serializable, Cloneable {
@ApiModelProperty("doudou_id")
private String doudouId;
@ApiModelProperty("user_id")
private String userId;
@ApiModelProperty("观演人姓名")
private String username;
@ApiModelProperty("观演人手机号")
private String phone;
@ApiModelProperty("购买平台")
private String platform;
@ApiModelProperty("购买订单号")
private String orderCode;
@ApiModelProperty("想给doudou说的话")
private String mark;
@ApiModelProperty("状态 1已登记 2未中签 3已中签 4已核销")
private Integer status;
private static final SweetDouDouVo obj = new SweetDouDouVo();
public static SweetDouDouVo getNew() {
try {
return (SweetDouDouVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetDouDouVo();
}
}
public SweetDouDouVo copy(SweetDoudou source) {
if (null == source) return this;
this.setPhone(source.getPhone());
return this;
}
}
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;
/**
* <p>
* doudou预约签名CD记录表
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetDoudou implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* doudou_id
*/
private String doudouId;
/**
* user_id
*/
private String userId;
/**
* 观演人姓名
*/
private String username;
/**
* 观演人手机号
*/
private String phone;
/**
* 购买平台
*/
private String platform;
/**
* 购买订单号
*/
private String orderCode;
/**
* 想给doudou说的话
*/
private String mark;
/**
* 状态 1已登记 2未中签 3已中签 4已核销
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetDoudou obj = new SweetDoudou();
public static SweetDoudou getNew() {
try {
return (SweetDoudou) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetDoudou();
}
}
}
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.liquidnet.service.sweet.entity.SweetDoudou;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* doudou预约签名CD记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
public interface SweetDoudouMapper extends BaseMapper<SweetDoudou> {
}
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.SweetDoudouMapper">
</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="com.liquidnet.service.sweet.mapper.SweetDoudouScopeMapper">
</mapper>
-- 20250604 doudou预约签名CD记录表
drop TABLE if exists `sweet_doudou`;
CREATE TABLE `sweet_doudou`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`doudou_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'doudou_id',
`user_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'user_id',
`username` varchar(255) NOT NULL DEFAULT '' COMMENT '观演人姓名',
`phone` varchar(11) NOT NULL DEFAULT '' COMMENT '观演人手机号',
`platform` varchar(100) NOT NULL DEFAULT '' COMMENT '购买平台',
`order_code` varchar(100) NOT NULL DEFAULT '' COMMENT '购买订单号',
`mark` varchar(512) DEFAULT '' COMMENT '想给doudou说的话',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态 1已登记 2未中签 3已中签 4已核销',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_doudou_id` (`doudou_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
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
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;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
/**
* <p>
* doudou预约签名CD记录表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
@Api(tags = "活动-doudou")
@RestController
@RequestMapping("/doudou")
public class SweetDoudouController {
@Autowired
private ISweetDoudouService iSweetDoudouService;
@GetMapping("")
@ApiOperation("获取用户预约详情")
public ResponseDto<SweetDouDouVo> info() {
return iSweetDoudouService.info();
}
@PostMapping("")
@ApiOperation("预约")
public ResponseDto<SweetDouDouVo> create(@Valid @RequestBody SweetDouDouParam param) {
return iSweetDoudouService.create(param);
}
@PostMapping("/detail")
@ApiOperation("核验-码详情")
public ResponseDto<SweetDouDouVo> detail(@Valid @RequestBody SweetDouDouCheckParam param) {
return iSweetDoudouService.detail(param);
}
@PostMapping("/check")
@ApiOperation("核销")
public ResponseDto check(@Valid @RequestBody SweetDouDouCheckParam param) {
return iSweetDoudouService.check(param);
}
@PostMapping("/winning/upload")
@ApiOperation("中签上传")
public ResponseDto<Boolean> winningUpload(@RequestPart(value = "file") MultipartFile file) {
return ResponseDto.success(iSweetDoudouService.winningUpload(file));
}
}
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.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.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.*;
/**
* <p>
* doudou预约签名CD记录表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
@Slf4j
@Service
public class SweetDoudouServiceImpl extends ServiceImpl<SweetDoudouMapper, SweetDoudou> implements ISweetDoudouService {
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
QueueUtils queueUtils;
@Override
public ResponseDto<SweetDouDouVo> info() {
String uid = CurrentUtil.getCurrentUid();
SweetDouDouVo vo = redisDataUtils.getSweetDouDou(uid);
return ResponseDto.success(vo);
}
@Override
public ResponseDto<SweetDouDouVo> create(SweetDouDouParam param) {
String uid = CurrentUtil.getCurrentUid();
SweetDouDouVo vo = redisDataUtils.getSweetDouDou(uid);
if (null != vo) {
return ResponseDto.failure("您已经预约过啦~");
}
String nextSnowId = IDGenerator.nextSnowId();
String username = param.getUsername();
String phone = param.getPhone();
String platform = param.getPlatform();
String orderCode = param.getOrderCode();
String mark = param.getMark();
SweetDouDouVo entityVo = SweetDouDouVo.getNew();
entityVo.setDoudouId(nextSnowId);
entityVo.setUsername(username);
entityVo.setPhone(phone);
entityVo.setPlatform(platform);
entityVo.setOrderCode(orderCode);
entityVo.setMark(mark);
entityVo.setUserId(uid);
entityVo.setStatus(1);
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_doudou.insert"));
sqlsDataA.add(new Object[]{
nextSnowId, uid, username, phone, platform, orderCode, mark
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_ANSWER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
redisDataUtils.setSweetDouDou(entityVo);
return ResponseDto.success(entityVo);
}
@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.getDoudouId().equals(param.getDoudouId())) {
return ResponseDto.failure(ErrorMapping.get("90095"));
}
// 判断状态
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();
}
@Override
public ResponseDto<SweetDouDouVo> detail(SweetDouDouCheckParam param) {
if (!checkScope(param.getAuthMobile())) {
log.info("无权核验, authMoible: {}", param.getAuthMobile());
return ResponseDto.failure(ErrorMapping.get("20003"));
}
SweetDouDouVo vo = redisDataUtils.getSweetDouDou(param.getUserId());
if (vo == null) {
return ResponseDto.failure(ErrorMapping.get("90091"));
}
if (!vo.getDoudouId().equals(param.getDoudouId())) {
return ResponseDto.failure(ErrorMapping.get("90095"));
}
return ResponseDto.success(vo);
}
@Override
public boolean winningUpload(MultipartFile file) {
List<SweetDouDouVo> fileSweetDouDouVos = getSweetDouDouVoListByFile(file);
if (fileSweetDouDouVos.isEmpty()) {
log.error("文件是空的");
return false;
}
for (SweetDouDouVo fileDouDouVo : fileSweetDouDouVos) {
SweetDouDouVo vo = redisDataUtils.getSweetDouDou(fileDouDouVo.getUserId());
if (vo != null) {
vo.setStatus(fileDouDouVo.getStatus());
redisDataUtils.setSweetDouDou(vo);
log.info("更新Redis成功");
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_doudou.update"));
sqlsDataA.add(new Object[]{
fileDouDouVo.getStatus(), LocalDateTime.now(), vo.getDoudouId()
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_ANSWER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
log.info("更新MySQL消息发送成功");
}
}
return true;
}
private List<SweetDouDouVo> getSweetDouDouVoListByFile(MultipartFile file) {
// 1. 验证文件类型
if (!isExcelFile(file)) {
log.error("请上传excel文件");
return Collections.emptyList();
}
ArrayList<SweetDouDouVo> sweetDouDouVos = new ArrayList<>();
try (InputStream inputStream = file.getInputStream();
Workbook workbook = WorkbookFactory.create(inputStream)) {
Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
Iterator<Row> rowIterator = sheet.iterator();
// 跳过列名行
if (rowIterator.hasNext()) rowIterator.next();
// 2. 处理数据行
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
if (isRowEmpty(row)) continue; // 跳过空行
SweetDouDouVo vo = SweetDouDouVo.getNew();
vo.setDoudouId(getStringValue(row.getCell(0)));
vo.setUserId(getStringValue(row.getCell(1)));
vo.setUsername(getStringValue(row.getCell(2)));
vo.setPhone(getStringValue(row.getCell(3)));
vo.setPlatform(getStringValue(row.getCell(4)));
vo.setOrderCode(getStringValue(row.getCell(5)));
vo.setMark(getStringValue(row.getCell(6)));
String cell7 = getStringValue(row.getCell(7));
vo.setStatus(cell7.equals("1") ? 3 : 2);
sweetDouDouVos.add(vo);
}
return sweetDouDouVos;
} catch (Exception e) {
log.error("error", e);
return Collections.emptyList();
}
}
// 辅助方法实现
private boolean isExcelFile(MultipartFile file) {
String fileName = file.getOriginalFilename();
return fileName != null &&
(fileName.endsWith(".xls") || fileName.endsWith(".xlsx"));
}
private boolean isRowEmpty(Row row) {
for (int i = 0; i < 7; i++) {
Cell cell = row.getCell(i, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
if (cell != null && cell.getCellType() != CellType.BLANK) {
return false;
}
}
return true;
}
private String getStringValue(Cell cell) {
if (cell == null) return "";
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue().trim();
case NUMERIC:
return String.valueOf((int) cell.getNumericCellValue());
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
default:
return "";
}
}
private boolean checkScope(String authMobile) {
SweetDouDouScopeVo sweetDouDouScopeVo = redisDataUtils.getSweetDouDouScopeVo(authMobile);
return sweetDouDouScopeVo != null;
}
}
......@@ -60,6 +60,8 @@ public class RedisDataUtils {
@Autowired
private SweetIntegralActivityDrawMapper sweetIntegralActivityDrawMapper;
@Autowired
private SweetDoudouScopeMapper sweetDoudouScopeMapper;
@Autowired
@Lazy
private FeignSlimeApiClient feignSlimeApiClient;
......@@ -458,6 +460,39 @@ public class RedisDataUtils {
redisUtil.set(redisKey, sweetAnswerVo);
}
// doudou
public void setSweetDouDou(SweetDouDouVo vo) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_DOUDOU_USER.concat(vo.getUserId());
redisUtil.set(redisKey, vo);
}
public SweetDouDouVo getSweetDouDou(String uid) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_DOUDOU_USER.concat(uid);
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) {
// 从MySQL查询
LambdaQueryWrapper<SweetDoudouScope> lambda = new QueryWrapper<SweetDoudouScope>()
.lambda().eq(SweetDoudouScope::getMobile, mobile)
.eq(SweetDoudouScope::getStatus, 1);
SweetDoudouScope scope = sweetDoudouScopeMapper.selectOne(lambda);
if (scope != null) {
scopeVo = new SweetDouDouScopeVo().copy(scope);
setSweetDouDouScopeVo(scopeVo);
}
}
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
90095=\u4E8C\u7EF4\u7801\u65E0\u6548
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