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

Commit 309ac069 authored by GaoHu's avatar GaoHu

MIX组合购新增预约功能

parent 4d9146cf
...@@ -338,6 +338,11 @@ public class GoblinRedisConst { ...@@ -338,6 +338,11 @@ public class GoblinRedisConst {
public static final String GOBLIN_MIX_LIMIT = PREFIX.concat("mix:limit:");//$key:$mixId:$uid 混合售开始列表 public static final String GOBLIN_MIX_LIMIT = PREFIX.concat("mix:limit:");//$key:$mixId:$uid 混合售开始列表
public static final String GOBLIN_MIX_RESERVE_UID = PREFIX.concat("mix:reserve:uid:");//$mixId:$uid 混合售用户预约保存
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
public static final String GOBLIN_ORDER_LOG = PREFIX.concat("order:log:");//无用 public static final String GOBLIN_ORDER_LOG = PREFIX.concat("order:log:");//无用
......
package com.liquidnet.service.goblin.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 商城订单表
* </p>
*
* @author liquidnet
* @since 2021-12-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinMixReserveVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = " mix预约表生成id")
private String mid;
@ApiModelProperty(value = " mixId")
private String mixId;
@ApiModelProperty(value = " uid")
private String uid;
@ApiModelProperty(value = " 预约人手机号")
private String phone;
@ApiModelProperty(value = " 预约时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime createdDate;
private static final GoblinMixReserveVo obj = new GoblinMixReserveVo();
public static GoblinMixReserveVo getNew() {
try {
return (GoblinMixReserveVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinMixReserveVo();
}
}
}
...@@ -55,4 +55,13 @@ public interface IGoblinGoodsAnticipateMgService { ...@@ -55,4 +55,13 @@ public interface IGoblinGoodsAnticipateMgService {
* @return 预约关联sku和spu表 * @return 预约关联sku和spu表
*/ */
AnticipateValueVo getAnticipateValueBySkuId(String skuId,int hasHead); AnticipateValueVo getAnticipateValueBySkuId(String skuId,int hasHead);
/**
* 组合购用户预约
* @param mixId 组合购id
* @return Boolean
*/
ResponseDto<Boolean> reserveByMix(String mixId);
ResponseDto<Boolean> reserveMixByUid(String mixId);
} }
...@@ -5,6 +5,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport; ...@@ -5,6 +5,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService;
import com.liquidnet.service.goblin.service.manage.IGoblinMixAppService; import com.liquidnet.service.goblin.service.manage.IGoblinMixAppService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -29,6 +30,9 @@ public class GoblinMixAppController { ...@@ -29,6 +30,9 @@ public class GoblinMixAppController {
@Autowired @Autowired
IGoblinMixAppService goblinMixAppService; IGoblinMixAppService goblinMixAppService;
@Autowired
IGoblinGoodsAnticipateMgService goblinGoodsAnticipateMgService;
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@ApiOperation(value = "列表") @ApiOperation(value = "列表")
@ApiImplicitParams({ @ApiImplicitParams({
...@@ -78,4 +82,24 @@ public class GoblinMixAppController { ...@@ -78,4 +82,24 @@ public class GoblinMixAppController {
public ResponseDto<Boolean> mixCanBy(@RequestParam(value = "mixId", required = true) String mixId) { public ResponseDto<Boolean> mixCanBy(@RequestParam(value = "mixId", required = true) String mixId) {
return goblinMixAppService.canBy(mixId, CurrentUtil.getCurrentUid()); return goblinMixAppService.canBy(mixId, CurrentUtil.getCurrentUid());
} }
@ApiOperationSupport(order = 6)
@ApiOperation(value = "用户预约MIX混合购")
@GetMapping("reserveByMix")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mixId", value = "混合售id"),
})
public ResponseDto<Boolean> reserveByMix(@RequestParam(value = "mixId", required = true) String mixId) {
return goblinGoodsAnticipateMgService.reserveByMix(mixId);
}
@ApiOperationSupport(order = 7)
@ApiOperation(value = "用户是否预约Mix")
@GetMapping("reserveMixByUid")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mixId", value = "混合售id"),
})
public ResponseDto<Boolean> reserveMixByUid(@RequestParam(value = "mixId", required = true) String mixId) {
return goblinGoodsAnticipateMgService.reserveMixByUid(mixId);
}
} }
package com.liquidnet.service.goblin.service.impl; package com.liquidnet.service.goblin.service.impl;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil; 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.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.param.GoblinMixDetailsItemParam;
import com.liquidnet.service.goblin.param.GoblinMixDetailsParam;
import com.liquidnet.service.goblin.param.GoblinMixUpdateParam;
import com.liquidnet.service.goblin.service.manage.IGoblinMixAppService; import com.liquidnet.service.goblin.service.manage.IGoblinMixAppService;
import com.liquidnet.service.goblin.service.manage.IGoblinMixService;
import com.liquidnet.service.goblin.util.*; import com.liquidnet.service.goblin.util.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -22,12 +12,9 @@ import org.springframework.beans.BeanUtils; ...@@ -22,12 +12,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS; import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
......
...@@ -14,6 +14,8 @@ import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueParam; ...@@ -14,6 +14,8 @@ 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.AnticipateValueVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo; import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateVo; import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateVo;
import com.liquidnet.service.goblin.dto.vo.GoblinMixDetailsVo;
import com.liquidnet.service.goblin.dto.vo.GoblinMixReserveVo;
import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService; import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService;
import com.liquidnet.service.goblin.util.GoblinAnticipateUtils; import com.liquidnet.service.goblin.util.GoblinAnticipateUtils;
import com.liquidnet.service.goblin.util.GoblinMongoUtils; import com.liquidnet.service.goblin.util.GoblinMongoUtils;
...@@ -30,6 +32,8 @@ import java.util.HashMap; ...@@ -30,6 +32,8 @@ import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
/** /**
* <p> * <p>
* 预约表 服务实现类 * 预约表 服务实现类
...@@ -243,4 +247,48 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat ...@@ -243,4 +247,48 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
sqlStr); sqlStr);
} }
@Override
public ResponseDto<Boolean> reserveByMix(String mixId) {
//获取udi
String uid = CurrentUtil.getCurrentUid();
LocalDateTime now = LocalDateTime.now();
//redis查询用户预约组合购记录
if (goblinRedisUtils.getReserveMixByUid(uid, mixId) == null) {
//该混合狗能否被预约
GoblinMixDetailsVo mixDetails = goblinRedisUtils.getMixDetails(mixId);
LocalDateTime st = LocalDateTime.parse(mixDetails.getTimeStartOrShelvesTime(mixDetails), DTF_YMD_HMS);
//组合购开启预约且当前时间大于预约购开始时间或者上架时间才可预约
if (mixDetails.getReserve() != 0 && now.isBefore(st)) {
GoblinMixReserveVo goblinMixReserveVo = GoblinMixReserveVo.getNew();
goblinMixReserveVo.setMixId(mixId);
goblinMixReserveVo.setCreatedDate(now);
goblinMixReserveVo.setUid(uid);
String mobile = StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE)), "");
goblinMixReserveVo.setPhone(mobile);
//redis保存用户预约组合购记录
goblinRedisUtils.setReserveMixByUid(goblinMixReserveVo);
//sql插入
String mid = IDGenerator.nextTimeId2();
//发送redis消息修改mysql记录用户预约
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
sqlValue.add(new Object[]{
mid,
uid,
mobile,
mixId,
0
});
sendRedis("goblin_goods_anticipate_mix", sqlValue);
}
}
return ResponseDto.success();
}
@Override
public ResponseDto<Boolean> reserveMixByUid(String mixId) {
//获取udi
String uid = CurrentUtil.getCurrentUid();
return ResponseDto.success(goblinRedisUtils.getReserveMixByUid(uid, mixId) != null);
}
} }
...@@ -2593,6 +2593,17 @@ public class GoblinRedisUtils { ...@@ -2593,6 +2593,17 @@ public class GoblinRedisUtils {
mixIds.add(mixId); mixIds.add(mixId);
setGoblinMixSkuStartList(mixIds); setGoblinMixSkuStartList(mixIds);
} }
public void setReserveMixByUid(GoblinMixReserveVo goblinMixReserveVo) {
String rdk = GoblinRedisConst.GOBLIN_MIX_RESERVE_UID.concat(goblinMixReserveVo.getMixId()).concat(":").concat(goblinMixReserveVo.getUid());
redisUtil.set(rdk,1);
}
public GoblinMixReserveVo getReserveMixByUid(String uid, String mixId) {
return (GoblinMixReserveVo) redisUtil.get(GoblinRedisConst.GOBLIN_MIX_RESERVE_UID.concat(mixId).concat(":").concat(uid));
}
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
} }
...@@ -142,6 +142,7 @@ goblin_goods_anticipate_help=INSERT INTO goblin_goods_anticipate_help(sid,help_u ...@@ -142,6 +142,7 @@ goblin_goods_anticipate_help=INSERT INTO goblin_goods_anticipate_help(sid,help_u
goblin_goods_anticipate_share=INSERT INTO goblin_goods_anticipate_share(sid,uid,sku_id,created_date) VALUES(?,?,?,?) goblin_goods_anticipate_share=INSERT INTO goblin_goods_anticipate_share(sid,uid,sku_id,created_date) VALUES(?,?,?,?)
goblin_goods_anticipate_user_update=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE uid = ? AND sku_id = ? goblin_goods_anticipate_user_update=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE uid = ? AND sku_id = ?
goblin_goods_anticipate_user_update_sku=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE sku_id = ? goblin_goods_anticipate_user_update_sku=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE sku_id = ?
goblin_goods_anticipate_mix=INSERT INTO goblin_goods_anticipate_mix ( mid, uid, phone, mix_id, state, created_date ) VALUES(?,?,?,?,?,NOW())
#---- \u4E1A\u52A1\u8D26\u53F7\u8BB0\u5F55 #---- \u4E1A\u52A1\u8D26\u53F7\u8BB0\u5F55
adam_user_busi_acct.add=INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?) adam_user_busi_acct.add=INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?)
#---- \u9ED1\u767D\u540D\u5355 ---- #---- \u9ED1\u767D\u540D\u5355 ----
......
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