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

Commit b00b3ca1 authored by GaoHu's avatar GaoHu

修改预约逻辑

parent de58601d
package com.liquidnet.service.goblin.service.impl;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil;
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.goblin.dto.manage.GoblinGoodsAnticipateAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueParam;
import com.liquidnet.service.goblin.dto.manage.vo.AnticipateValueVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodAnticipateUserVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateVo;
import com.liquidnet.service.goblin.service.IGoblinGoodsAnticipateService;
import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
/**
* <p>
* 预约表 服务实现类
* </p>
*
* @author liquidnet
* @since 2022-04-07
*/
@Service
@Slf4j
public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateService {
@Autowired
GoblinRedisUtils goblinRedisUtils;
@Autowired
QueueUtils queueUtils;
@Override
public ResponseDto<Object> userAbout(String skuId, String uid, String phone) {
//查询该skuId是否能被预约
GoblinGoodsAnticipateValueVo anticipateValueVo = goblinRedisUtils.getValueBySkuId(skuId);
if (anticipateValueVo != null) {
anticipateValueVo.setState(setState(anticipateValueVo.getAboutStartDate(), anticipateValueVo.getAboutEndDate()));
if (!anticipateValueVo.getState().equals(1)) {
return ResponseDto.failure("预约尚未开始或已结束!");
}
//查询该用户是否预
GoblinGoodAnticipateUserVo userVo = goblinRedisUtils.getUserAboutAut(skuId, uid);
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
if (userVo == null) {
GoblinGoodAnticipateUserVo user = new GoblinGoodAnticipateUserVo();
user.setUid(uid);
user.setSkuId(skuId);
user.setPhone(phone);
user.setState(0);
//mongodb记录
goblinRedisUtils.setUserAboutSku(user);
//用户没有预约过
//发送redis消息修改mysql记录用户预约
sqlValue.add(new Object[]{
uid,
skuId,
phone,
0
});
sendRedis("goblin_goods_anticipate_user", sqlValue);
goblinRedisUtils.setSkuIdPeople(skuId, 0);
//储存用户头像
userAvatar(skuId);
}
return ResponseDto.success();
}
return ResponseDto.failure("该预约不存在!");
}
private Integer setState(LocalDateTime StartDate, LocalDateTime EndDate) {
LocalDateTime now = LocalDateTime.now();
if (StartDate.isAfter(now)) {
//未开始 0
return 0;
}
if (StartDate.isBefore(now) && EndDate.isAfter(now)) {
//预约中 1
return 1;
}
if (EndDate.isBefore(now)) {
//已结束 2
return 2;
}
//其他
return null;
}
private void userAvatar(String skuId) {
//获取
goblinRedisUtils.setUserAvatar(skuId);
}
public void sendRedis(String sqlKey, LinkedList<Object[]> sqlData) {
LinkedList<String> sql = CollectionUtil.linkedListString();
sql.add(SqlMapping.get(sqlKey));
String sqlStr = SqlMapping.gets(sql, sqlData);
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_STORE_MARKET.getKey(),
sqlStr);
}
}
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