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

Commit de58601d authored by GaoHu's avatar GaoHu

修改预约逻辑

parent 4ae09c3d
......@@ -239,6 +239,9 @@ public class GoblinRedisConst {
public static final String ANTICIPATE_SKUID_AVATAR = PREFIX.concat("anticipate:skuId:avatar:");
public static final String ANTICIPATE_VALUE_SKUID = PREFIX.concat("anticipate:value:skuid:");
/* ----------------------------------------------------------------- */
......
......@@ -23,30 +23,10 @@ import java.util.List;
*/
public interface IGoblinGoodsAnticipateService {
/**
* 查询预约
*/
ResponseDto<PageInfo<GoblinGoodsAnticipateValueVo>> list(GoblinGoodsAnticipateValueParam goodsAnticipateValueParam);
/**
* 新增预约
*/
ResponseDto<Object> add(GoblinGoodsAnticipateAddParam goodsAnticipateAddParam);
/**
* 修改预约人数
*/
ResponseDto<Object> updatePeople(String antId, BigInteger people);
/**
* 删除预约
*/
ResponseDto<Object> delete(String skuId);
/**
* 用户预约
*/
ResponseDto<Object> userAbout(String skuId, String uid, String phone);
AnticipateValueVo getAnticipateValueBySkuId(String skuId,int hasHead);
}
package com.liquidnet.service.goblin.service;
/**
* <p>
* 预约表关联user表 服务类
* </p>
*
* @author liquidnet
* @since 2022-04-07
*/
public interface IGoblinGoodsAnticipateUserService{
}
package com.liquidnet.service.goblin.service;
/**
* <p>
* 预约关联sku和spu表 服务类
* </p>
*
* @author liquidnet
* @since 2022-04-07
*/
public interface IGoblinGoodsAnticipateValueService {
}
package com.liquidnet.service.goblin.service.manage;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateAddParam;
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 java.math.BigInteger;
/**
* <p>
* 预约表 服务类
* </p>
*
* @author liquidnet
* @since 2022-04-07
*/
public interface IGoblinGoodsAnticipateMgService {
/**
* 查询预约
*/
ResponseDto<PageInfo<GoblinGoodsAnticipateValueVo>> list(GoblinGoodsAnticipateValueParam goodsAnticipateValueParam);
/**
* 新增预约
*/
ResponseDto<Object> add(GoblinGoodsAnticipateAddParam goodsAnticipateAddParam);
/**
* 修改预约人数
*/
ResponseDto<Object> updatePeople(String antId, BigInteger people);
/**
* 删除预约
*/
ResponseDto<Object> delete(String skuId);
AnticipateValueVo getAnticipateValueBySkuId(String skuId,int hasHead);
}
......@@ -4,12 +4,9 @@ package com.liquidnet.service.goblin.controller.manage;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateUpdateParam;
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.service.IGoblinGoodsAnticipateService;
import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -34,36 +31,36 @@ import java.util.List;
public class GoblinGoodsAnticipateMgController {
@Autowired
IGoblinGoodsAnticipateService goblinGoodsAnticipateService;
IGoblinGoodsAnticipateMgService goblinGoodsAnticipateMgService;
@ApiOperation("创建预约信息")
@PostMapping("/add")
public ResponseDto<Object> add(@RequestBody GoblinGoodsAnticipateAddParam goodsAnticipateAddParam) {
return goblinGoodsAnticipateService.add(goodsAnticipateAddParam);
return goblinGoodsAnticipateMgService.add(goodsAnticipateAddParam);
}
@PostMapping("/list")
@ApiOperation("获取全部开启预约的sku")
public ResponseDto<PageInfo<GoblinGoodsAnticipateValueVo>> list(GoblinGoodsAnticipateValueParam goodsAnticipateValueParam) {
return goblinGoodsAnticipateService.list(goodsAnticipateValueParam);
return goblinGoodsAnticipateMgService.list(goodsAnticipateValueParam);
}
@ApiOperation("修改预约人数")
@PostMapping("/updatePeople")
public ResponseDto<Object> updatePeople(@RequestParam(name = "skuId", required = true) String skuId, @RequestParam(name = "people", required = true) BigInteger people) {
return goblinGoodsAnticipateService.updatePeople(skuId, people);
return goblinGoodsAnticipateMgService.updatePeople(skuId, people);
}
@ApiOperation("删除预约")
@DeleteMapping("/delete")
public ResponseDto<Object> delete(@RequestParam(name = "skuId") String skuId) {
return goblinGoodsAnticipateService.delete(skuId);
return goblinGoodsAnticipateMgService.delete(skuId);
}
// @ApiOperation("更具sku获取信息")
// @GetMapping("/getAnticipateValueBySkuId")
// public ResponseDto<AnticipateValueVo> getAnticipateValueBySkuId(@RequestParam(name = "skuId") String skuId){
// return goblinGoodsAnticipateService.getAnticipateValueBySkuId(skuId);
// return goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId);
// }
}
......@@ -9,6 +9,7 @@ import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.GoblinCouponService;
import com.liquidnet.service.goblin.service.IGoblinGoodsAnticipateService;
import com.liquidnet.service.goblin.service.IGoblinNftGoodsAppService;
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.ObjectUtil;
......@@ -48,7 +49,7 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
@Autowired
GoblinCouponService goblinCouponService;
@Autowired
IGoblinGoodsAnticipateService goblinGoodsAnticipateService;
IGoblinGoodsAnticipateMgService goblinGoodsAnticipateMgService;
@Override
public ResponseDto<PagedResult<GoblinNftGoodsSkuListVo>> goodsList(int page) {
......@@ -73,7 +74,7 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
List<GoblinGoodsSkuInfoVo> skuInfoVos = mongoTemplate.find(query, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
for (GoblinGoodsSkuInfoVo info : skuInfoVos) {
//获取预约相关
AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateService.getAnticipateValueBySkuId(info.getSkuId(), 0);
AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(info.getSkuId(),0);
// sku信息
GoblinNftGoodsSkuListVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuListVo.getNew().copy(info, anticipateValueVo);
// spu信息
......@@ -119,7 +120,7 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (goblinRedisUtils.getSkuAllStatusShow(goodsSkuInfoVo)) {
//获取预约相关
AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateService.getAnticipateValueBySkuId(skuId, 1);
AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId,1);
GoblinNftGoodsSkuInfoVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuInfoVo.getNew().copy(goodsSkuInfoVo, anticipateValueVo);
// 限购数量
......
package com.liquidnet.service.goblin.service.impl;
package com.liquidnet.service.goblin.service.impl.manage;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil;
......@@ -7,14 +7,13 @@ 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.GoblinGoodsAnticipateUpdateParam;
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;
......@@ -40,7 +39,7 @@ import java.util.List;
*/
@Service
@Slf4j
public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateService {
public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipateMgService {
@Autowired
GoblinMongoUtils goblinMongoUtils;
......@@ -56,7 +55,10 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
if (StringUtils.isNotBlank(goodsAnticipateAddParam.getRule()) && goodsAnticipateAddParam.getList() != null && goodsAnticipateAddParam.getList().size() > 0) {
for (GoblinGoodsAnticipateValueAddParam vo : goodsAnticipateAddParam.getList()) {
if (goblinRedisUtils.getSkuId(vo.getSkuId())) {
return ResponseDto.failure(vo.getSkuName().concat("该sku已存在预约"));
return ResponseDto.failure(vo.getSkuName().concat("该商品已创建预约!"));
}
if (vo.getAboutStartDate().isAfter(vo.getAboutEndDate())){
return ResponseDto.failure(vo.getSkuName().concat("该商品预约时间在结束时间之后,不可创建!"));
}
}
//生成的antId
......@@ -101,7 +103,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
goodsAnticipateValueVo.setActualPeople(BigInteger.valueOf(0));
//redis消息
//redis标识存入该sku处于预约列表
goblinRedisUtils.setSkuId(goodsAnticipateValueVo.getSkuId());
goblinRedisUtils.setValue(goodsAnticipateValueVo);
//保存mysql中间表
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
......@@ -187,7 +189,8 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
@Override
public ResponseDto<Object> delete(String skuId) {
//更具skuId查询
GoblinGoodsAnticipateValueVo goodsAnticipateValueVo = goblinMongoUtils.getAnticipateValueVo(skuId);
GoblinGoodsAnticipateValueVo goodsAnticipateValueVo = goblinRedisUtils.getValueBySkuId(skuId);
if (goodsAnticipateValueVo != null) {
goodsAnticipateValueVo.setState(setState(goodsAnticipateValueVo.getAboutStartDate(), goodsAnticipateValueVo.getAboutEndDate()));
//没有开启则可以删除预约
......@@ -219,47 +222,9 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
sendRedis("goblin_goods_anticipate_user_update_sku", sqlValue);
}
@Override
public ResponseDto<Object> userAbout(String skuId, String uid, String phone) {
//查询该skuId是否能被预约
GoblinGoodsAnticipateValueVo anticipateValueVo = goblinMongoUtils.getAnticipateValueVo(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("该预约不存在!");
}
@Override
public AnticipateValueVo getAnticipateValueBySkuId(String skuId, int hasHead) {
GoblinGoodsAnticipateValueVo anticipateValueVo = goblinMongoUtils.getAnticipateValueVo(skuId);
GoblinGoodsAnticipateValueVo anticipateValueVo = goblinRedisUtils.getValueBySkuId(skuId);
AnticipateValueVo valueVo = AnticipateValueVo.getNew();
if (anticipateValueVo != null) {
valueVo = valueVo.copy(anticipateValueVo);
......
......@@ -131,19 +131,11 @@ public class GoblinMongoUtils {
* 根据amtId删除VO
*/
public void delGoodsAnticipateValueVo(String skuId) {
redisUtils.delGoodsSkuId(skuId);
redisUtils.delSkuId(skuId);
Query query = Query.query(Criteria.where("skuId").is(skuId));
mongoTemplate.remove(query, GoblinGoodsAnticipateValueVo.class.getSimpleName()).getDeletedCount();
}
/**
* 根据skuId获取sku信息
*/
public GoblinGoodsAnticipateValueVo getAnticipateValueVo(String skuId) {
Query query = Query.query(Criteria.where("skuId").is(skuId));
return mongoTemplate.findOne(query,GoblinGoodsAnticipateValueVo.class,GoblinGoodsAnticipateValueVo.class.getSimpleName());
}
/**
* 根据活动id查询关联
*/
......
......@@ -10,6 +10,7 @@ import com.liquidnet.service.adam.dto.vo.AdamUserProfileVo;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.GoblinStoreMarketDto;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinMgtCategorySpecVo;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinFrontBanner;
......@@ -49,22 +50,30 @@ public class GoblinRedisUtils {
/**
* 该skuId已开启预约
*/
public void setSkuId(String skuId){
redisUtil.set(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId),1);
public void setValue(GoblinGoodsAnticipateValueVo valueVo){
redisUtil.set(GoblinRedisConst.ANTICIPATE_VALUE_SKUID.concat(valueVo.getSkuId()),valueVo);
}
/**
* 删除skuId已开启预约
* 根据skuId获取valueVo
*/
public void delAnticipateValue(String skuId){
redisUtil.del(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId));
public GoblinGoodsAnticipateValueVo getValueBySkuId(String skuId){
return (GoblinGoodsAnticipateValueVo)redisUtil.get(GoblinRedisConst.ANTICIPATE_VALUE_SKUID.concat(skuId));
}
/**
* 获取关联
*/
public boolean getSkuId(String skuId){
return redisUtil.get(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId)) != null;
return redisUtil.get(GoblinRedisConst.ANTICIPATE_VALUE_SKUID.concat(skuId)) != null;
}
/**
* 删除skuId已开启预约
*/
public void delSkuId(String skuId){
redisUtil.del(GoblinRedisConst.ANTICIPATE_VALUE_SKUID.concat(skuId));
}
public GoblinGoodAnticipateUserVo getUserAboutAut(String skuId, String uid) {
......
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