修改首页接口,增加清除缓存
This commit is contained in:
+4
-3
@@ -36,6 +36,7 @@ import co.yixiang.modules.activity.vo.YxStoreBargainUserQueryVo;
|
||||
import co.yixiang.modules.shop.service.YxSystemConfigService;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.modules.user.service.YxUserService;
|
||||
import co.yixiang.utils.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.google.common.collect.Maps;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -100,15 +101,15 @@ public class AppStoreBargainController {
|
||||
* 砍价详情
|
||||
*/
|
||||
@AppLog(value = "查看砍价产品", type = 1)
|
||||
@AuthCheck
|
||||
// @AuthCheck
|
||||
@GetMapping("/bargain/detail/{id}")
|
||||
@ApiOperation(value = "砍价详情",notes = "砍价详情",response = YxStoreBargainQueryVo.class)
|
||||
public ApiResult<BargainVo> getYxStoreBargain(@PathVariable Long id){
|
||||
if(ObjectUtil.isNull(id)) {
|
||||
throw new YshopException("参数错误");
|
||||
}
|
||||
YxUser yxUser = LocalUser.getUser();
|
||||
return ApiResult.ok(storeBargainService.getDetail(id,yxUser));
|
||||
Long uid = LocalUser.getUidByToken();
|
||||
return ApiResult.ok(storeBargainService.getDetail(id,uid));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+11
-4
@@ -27,6 +27,7 @@ import co.yixiang.modules.activity.vo.StoreCombinationVo;
|
||||
import co.yixiang.modules.product.service.YxStoreProductRelationService;
|
||||
import co.yixiang.modules.shop.service.YxSystemConfigService;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.utils.StringUtils;
|
||||
import com.google.common.collect.Maps;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -101,17 +102,23 @@ public class AppStoreCombinationController {
|
||||
* 拼团产品详情
|
||||
*/
|
||||
@AppLog(value = "查看拼团产品详情", type = 1)
|
||||
@AuthCheck
|
||||
// @AuthCheck
|
||||
@GetMapping("/combination/detail/{id}")
|
||||
@ApiOperation(value = "拼团产品详情",notes = "拼团产品详情")
|
||||
public ApiResult<StoreCombinationVo> detail(@PathVariable Long id){
|
||||
if(ObjectUtil.isNull(id)) {
|
||||
throw new YshopException("参数错误");
|
||||
}
|
||||
Long uid = LocalUser.getUser().getUid();
|
||||
// Long uid = LocalUser.getUser().getUid();
|
||||
Long uid = LocalUser.getUidByToken(); //不传token则返回uid是0
|
||||
StoreCombinationVo storeCombinationVo = storeCombinationService.getDetail(id,uid);
|
||||
storeCombinationVo.setUserCollect(relationService
|
||||
.isProductRelation(storeCombinationVo.getStoreInfo().getProductId(),uid));
|
||||
if (StringUtils.isBlank(uid.toString())||uid==0){ //如果是未登录状态
|
||||
storeCombinationVo.setUserCollect(false);
|
||||
}else {
|
||||
storeCombinationVo.setUserCollect(relationService
|
||||
.isProductRelation(storeCombinationVo.getStoreInfo().getProductId(),uid));
|
||||
}
|
||||
|
||||
return ApiResult.ok(storeCombinationVo);
|
||||
}
|
||||
|
||||
|
||||
+14
-63
@@ -10,6 +10,7 @@ package co.yixiang.app.modules.activity.rest;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.ApiResult;
|
||||
import cn.iocoder.yudao.framework.common.exception.YshopException;
|
||||
@@ -26,13 +27,16 @@ import co.yixiang.modules.product.service.YxStoreProductRelationService;
|
||||
import co.yixiang.modules.shop.domain.YxSystemGroupData;
|
||||
import co.yixiang.modules.shop.service.YxSystemGroupDataService;
|
||||
import co.yixiang.modules.shop.service.dto.YxSystemGroupDataQueryCriteria;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.utils.OrderUtil;
|
||||
import co.yixiang.utils.StringUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.checkerframework.common.value.qual.StringVal;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@@ -85,14 +89,19 @@ public class AppStoreSeckillController {
|
||||
* 根据id获取商品秒杀产品详情
|
||||
*/
|
||||
@AppLog(value = "根据id获取商品秒杀产品详情", type = 1)
|
||||
@AuthCheck
|
||||
// @AuthCheck
|
||||
@GetMapping("/seckill/detail/{id}")
|
||||
@ApiOperation(value = "秒杀产品详情", notes = "秒杀产品详情")
|
||||
public ApiResult<StoreSeckillVo> getYxStoreSeckill(@PathVariable Long id){
|
||||
Long uid = LocalUser.getUser().getUid();
|
||||
// Long uid = LocalUser.getUser().getUid();
|
||||
Long uid = LocalUser.getUidByToken();
|
||||
StoreSeckillVo storeSeckillVo = yxStoreSeckillService.getDetail(id);
|
||||
storeSeckillVo.setUserCollect(relationService
|
||||
.isProductRelation(storeSeckillVo.getStoreInfo().getProductId(),uid));
|
||||
if (StringUtils.isBlank(uid.toString())){//如果是未登录状态
|
||||
storeSeckillVo.setUserCollect(false);
|
||||
}else {
|
||||
storeSeckillVo.setUserCollect(relationService
|
||||
.isProductRelation(storeSeckillVo.getStoreInfo().getProductId(),uid));
|
||||
}
|
||||
return ApiResult.ok(storeSeckillVo);
|
||||
}
|
||||
|
||||
@@ -104,65 +113,7 @@ public class AppStoreSeckillController {
|
||||
@ApiOperation(value = "秒杀产品时间区间", notes = "秒杀产品时间区间")
|
||||
public ApiResult<SeckillConfigVo> getYxStoreSeckillIndex() {
|
||||
//获取秒杀配置
|
||||
AtomicInteger seckillTimeIndex = new AtomicInteger();
|
||||
SeckillConfigVo seckillConfigVo = new SeckillConfigVo();
|
||||
|
||||
YxSystemGroupDataQueryCriteria queryCriteria = new YxSystemGroupDataQueryCriteria();
|
||||
queryCriteria.setGroupName(ShopConstants.ZSW_SECKILL_TIME);
|
||||
queryCriteria.setStatus(1);
|
||||
List<YxSystemGroupData> yxSystemGroupDataList = yxSystemGroupDataService.queryAll(queryCriteria);
|
||||
|
||||
List<SeckillTimeDto> list = new ArrayList<>();
|
||||
int today = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(new Date()));
|
||||
yxSystemGroupDataList.forEach(i -> {
|
||||
String jsonStr = i.getValue();
|
||||
JSONObject jsonObject = JSON.parseObject(jsonStr);
|
||||
int time = Integer.valueOf(jsonObject.get("time").toString());//开启时间(几点) 5
|
||||
int continued = Integer.valueOf(jsonObject.get("continued").toString());//活动持续事件 3
|
||||
String rule="";
|
||||
if (jsonObject.get("rule")!=null){
|
||||
rule=jsonObject.get("rule").toString();
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH");
|
||||
String nowTime = sdf.format(new Date());
|
||||
String index = nowTime.substring(0, 1);
|
||||
int currentHour = "0".equals(index) ? Integer.valueOf(nowTime.substring(1, 2)) : Integer.valueOf(nowTime);
|
||||
SeckillTimeDto seckillTimeDto = new SeckillTimeDto();
|
||||
seckillTimeDto.setId(i.getId());
|
||||
//活动结束时间
|
||||
int activityEndHour = time + continued;
|
||||
if (activityEndHour > 24) {
|
||||
seckillTimeDto.setState("即将开始");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(2);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(today + activityEndHour * 3600);
|
||||
} else {
|
||||
if (currentHour >= time && currentHour < activityEndHour) {
|
||||
seckillTimeDto.setState("抢购中");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(1);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(today + activityEndHour * 3600);
|
||||
seckillTimeIndex.set(yxSystemGroupDataList.indexOf(i));
|
||||
} else if (currentHour < time) {
|
||||
seckillTimeDto.setState("即将开始");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(2);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(OrderUtil.dateToTimestamp(new Date()) + activityEndHour * 3600);
|
||||
} else if (currentHour >= activityEndHour) {
|
||||
seckillTimeDto.setState("已结束");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(0);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(today + activityEndHour * 3600);
|
||||
}
|
||||
}
|
||||
list.add(seckillTimeDto);
|
||||
});
|
||||
seckillConfigVo.setSeckillTimeIndex(seckillTimeIndex.get());
|
||||
seckillConfigVo.setSeckillTime(list);
|
||||
SeckillConfigVo seckillConfigVo=yxStoreSeckillService.getStoreSeckil();
|
||||
return ApiResult.ok(seckillConfigVo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,11 +15,14 @@ import cn.iocoder.yudao.framework.common.exception.YshopException;
|
||||
import co.yixiang.constant.ShopConstants;
|
||||
import co.yixiang.enums.ProductEnum;
|
||||
import co.yixiang.enums.ShopCommonEnum;
|
||||
import co.yixiang.modules.activity.service.YxStoreBargainService;
|
||||
import co.yixiang.modules.activity.service.YxStoreCombinationService;
|
||||
import co.yixiang.modules.activity.service.YxStoreSeckillService;
|
||||
import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo;
|
||||
import co.yixiang.modules.canvas.domain.StoreCanvas;
|
||||
import co.yixiang.modules.canvas.service.StoreCanvasService;
|
||||
import co.yixiang.modules.evaluation.service.YxEvaluationService;
|
||||
import co.yixiang.modules.hotList.service.YxStoreHotListService;
|
||||
import co.yixiang.modules.mp.service.YxWechatLiveService;
|
||||
import co.yixiang.modules.product.service.YxStoreProductService;
|
||||
import co.yixiang.modules.product.vo.YxSystemStoreQueryVo;
|
||||
@@ -83,6 +86,12 @@ public class BxgIndexController {
|
||||
private final YxSystemConfigService systemConfigService;
|
||||
private final StoreCanvasService storeCanvasService;
|
||||
|
||||
private final YxStoreHotListService yxStoreHotListService;
|
||||
|
||||
private final YxStoreBargainService yxStoreBargainService;
|
||||
|
||||
private final YxStoreSeckillService yxStoreSeckillService;
|
||||
|
||||
@GetMapping("/getCanvas")
|
||||
@ApiOperation(value = "读取画布数据")
|
||||
public ResponseEntity<StoreCanvas> getCanvas(StoreCanvas storeCanvas){
|
||||
@@ -106,6 +115,10 @@ public class BxgIndexController {
|
||||
//首页图
|
||||
// .banner(systemGroupDataService.getDatas(ShopConstants.ZSW_HOME_BANNER))
|
||||
.banner(list)
|
||||
.hotListDTOS(yxStoreHotListService.getList())//首页榜单
|
||||
.bargainList(yxStoreBargainService.getList(1,10))//砍价活动列表
|
||||
.seckillConfigVo(yxStoreSeckillService.getStoreSeckil())//秒杀配置
|
||||
.yxStoreSeckillQueryVoList(yxStoreSeckillService.getIndexList())//秒杀商品
|
||||
.bastList(storeProductService.getList(1,6, ProductEnum.TYPE_1.getValue()))
|
||||
.evaluationList(evaluationService.getList(1,5))
|
||||
.benefit(storeProductService.getList(1,100,ProductEnum.TYPE_4.getValue()))
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package co.yixiang.app.modules.shop.vo;
|
||||
|
||||
import co.yixiang.modules.activity.vo.SeckillConfigVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreBargainQueryVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreCombinationQueryVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo;
|
||||
import co.yixiang.modules.evaluation.service.dto.YxEvaluationDto;
|
||||
import co.yixiang.modules.evaluation.vo.YxEvaluationQueryVo;
|
||||
import co.yixiang.modules.mp.service.dto.YxWechatLiveDto;
|
||||
import co.yixiang.modules.product.vo.YxStoreProductQueryVo;
|
||||
import co.yixiang.utils.HotListDTO;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -16,6 +19,7 @@ import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@@ -26,6 +30,18 @@ public class IndexVo implements Serializable {
|
||||
|
||||
@ApiModelProperty("banner")
|
||||
private List<JSONObject> banner;
|
||||
|
||||
@ApiModelProperty("首页需要的榜单")
|
||||
private List<HotListDTO> hotListDTOS;
|
||||
|
||||
@ApiModelProperty("首页需要的砍价列表")
|
||||
private Map<String,List<YxStoreBargainQueryVo>> bargainList;
|
||||
|
||||
@ApiModelProperty("首页秒杀配置")
|
||||
private SeckillConfigVo seckillConfigVo;
|
||||
|
||||
@ApiModelProperty("首页秒杀产品")
|
||||
private List<YxStoreSeckillQueryVo> yxStoreSeckillQueryVoList;
|
||||
//首页按钮
|
||||
@ApiModelProperty("首页按钮")
|
||||
private List<JSONObject> menus;
|
||||
|
||||
+2
-2
@@ -79,10 +79,10 @@ public interface YxStoreBargainService extends BaseService<YxStoreBargain>{
|
||||
/**
|
||||
* 砍价详情
|
||||
* @param id 砍价id
|
||||
* @param yxUser 用户
|
||||
* @param uid 用户uid
|
||||
* @return BargainVo
|
||||
*/
|
||||
BargainVo getDetail(Long id, YxUser yxUser);
|
||||
BargainVo getDetail(Long id, Long uid);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,6 +12,7 @@ import co.yixiang.common.service.BaseService;
|
||||
import co.yixiang.modules.activity.domain.YxStoreSeckill;
|
||||
import co.yixiang.modules.activity.service.dto.YxStoreSeckillDto;
|
||||
import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria;
|
||||
import co.yixiang.modules.activity.vo.SeckillConfigVo;
|
||||
import co.yixiang.modules.activity.vo.StoreSeckillVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
@@ -27,6 +28,10 @@ import java.util.Map;
|
||||
*/
|
||||
public interface YxStoreSeckillService extends BaseService<YxStoreSeckill> {
|
||||
|
||||
/**
|
||||
* 秒杀产品时间区间
|
||||
*/
|
||||
SeckillConfigVo getStoreSeckil();
|
||||
|
||||
/**
|
||||
* 产品详情
|
||||
@@ -45,6 +50,8 @@ public interface YxStoreSeckillService extends BaseService<YxStoreSeckill> {
|
||||
*/
|
||||
List<YxStoreSeckillQueryVo> getList(int page, int limit, int time);
|
||||
|
||||
|
||||
List<YxStoreSeckillQueryVo> getIndexList();
|
||||
/**
|
||||
* 秒杀产品列表(首页用)
|
||||
*
|
||||
|
||||
+13
-3
@@ -45,9 +45,11 @@ import co.yixiang.modules.shop.service.YxSystemConfigService;
|
||||
import co.yixiang.modules.template.domain.YxShippingTemplates;
|
||||
import co.yixiang.modules.template.service.YxShippingTemplatesService;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.modules.user.service.YxUserService;
|
||||
import co.yixiang.modules.user.vo.YxUserQueryVo;
|
||||
import co.yixiang.utils.FileUtil;
|
||||
import co.yixiang.utils.OrderUtil;
|
||||
import co.yixiang.utils.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
@@ -97,6 +99,9 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
private YxShippingTemplatesService shippingTemplatesService;
|
||||
@Autowired
|
||||
private YxStoreProductService yxStoreProductService;
|
||||
|
||||
@Autowired
|
||||
private YxUserService yxUserService;
|
||||
/**
|
||||
* 退回库存销量
|
||||
* @param num 数量
|
||||
@@ -292,11 +297,11 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
/**
|
||||
* 砍价详情
|
||||
* @param id 砍价id
|
||||
* @param yxUser 用户
|
||||
* @param uid 用户uid
|
||||
* @return BargainVo
|
||||
*/
|
||||
@Override
|
||||
public BargainVo getDetail(Long id, YxUser yxUser) {
|
||||
public BargainVo getDetail(Long id, Long uid) {
|
||||
|
||||
Date now = new Date();
|
||||
YxStoreBargain storeBargain = this.lambdaQuery().eq(YxStoreBargain::getId,id)
|
||||
@@ -329,7 +334,12 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
YxStoreBargainQueryVo storeBargainQueryVo = generator.convert(storeBargain,
|
||||
YxStoreBargainQueryVo.class)
|
||||
.setConfig(storeProductMapper.selectById(storeBargain.getProductId()).getConfig());
|
||||
|
||||
YxUser yxUser;
|
||||
if (StringUtils.isBlank(uid.toString())||uid==0){
|
||||
yxUser=new YxUser();
|
||||
}else {
|
||||
yxUser=yxUserService.lambdaQuery().eq(YxUser::getUid,uid).one();
|
||||
}
|
||||
return BargainVo
|
||||
.builder()
|
||||
.bargain(storeBargainQueryVo)
|
||||
|
||||
+91
@@ -10,21 +10,25 @@ package co.yixiang.modules.activity.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.exception.YshopException;
|
||||
import co.yixiang.common.service.impl.BaseServiceImpl;
|
||||
import co.yixiang.common.utils.QueryHelpPlus;
|
||||
import co.yixiang.constant.ShopConstants;
|
||||
import co.yixiang.dozer.service.IGenerator;
|
||||
import co.yixiang.enums.ShopCommonEnum;
|
||||
import co.yixiang.enums.SpecTypeEnum;
|
||||
import co.yixiang.exception.BadRequestException;
|
||||
import co.yixiang.modules.activity.domain.YxStoreSeckill;
|
||||
import co.yixiang.modules.activity.service.YxStoreSeckillService;
|
||||
import co.yixiang.modules.activity.service.dto.SeckillTimeDto;
|
||||
import co.yixiang.modules.activity.service.dto.YxStoreSeckillDto;
|
||||
import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria;
|
||||
import co.yixiang.modules.activity.service.mapper.YxStoreSeckillMapper;
|
||||
import co.yixiang.modules.activity.vo.SeckillConfigVo;
|
||||
import co.yixiang.modules.activity.vo.StoreSeckillVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo;
|
||||
import co.yixiang.modules.product.domain.YxStoreProduct;
|
||||
@@ -36,13 +40,18 @@ import co.yixiang.modules.product.service.dto.ProductFormatDto;
|
||||
import co.yixiang.modules.product.service.dto.ProductResultDto;
|
||||
import co.yixiang.modules.product.service.mapper.StoreProductMapper;
|
||||
import co.yixiang.modules.product.vo.YxStoreProductAttrQueryVo;
|
||||
import co.yixiang.modules.shop.domain.YxSystemGroupData;
|
||||
import co.yixiang.modules.shop.service.YxSystemConfigService;
|
||||
import co.yixiang.modules.shop.service.YxSystemGroupDataService;
|
||||
import co.yixiang.modules.shop.service.dto.YxSystemGroupDataQueryCriteria;
|
||||
import co.yixiang.modules.template.domain.YxShippingTemplates;
|
||||
import co.yixiang.modules.template.service.YxShippingTemplatesService;
|
||||
import co.yixiang.utils.FileUtil;
|
||||
import co.yixiang.utils.OrderUtil;
|
||||
|
||||
import co.yixiang.utils.RedisUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
@@ -55,7 +64,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
|
||||
/**
|
||||
@@ -87,6 +98,74 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl<YxStoreSeckillMap
|
||||
|
||||
@Autowired
|
||||
private StoreProductMapper storeProductMapper;
|
||||
|
||||
@Autowired
|
||||
private YxSystemGroupDataService yxSystemGroupDataService;
|
||||
@Override
|
||||
public SeckillConfigVo getStoreSeckil() {
|
||||
//获取秒杀配置
|
||||
AtomicInteger seckillTimeIndex = new AtomicInteger();
|
||||
SeckillConfigVo seckillConfigVo = new SeckillConfigVo();
|
||||
|
||||
YxSystemGroupDataQueryCriteria queryCriteria = new YxSystemGroupDataQueryCriteria();
|
||||
queryCriteria.setGroupName(ShopConstants.ZSW_SECKILL_TIME);
|
||||
queryCriteria.setStatus(1);
|
||||
List<YxSystemGroupData> yxSystemGroupDataList = yxSystemGroupDataService.queryAll(queryCriteria);
|
||||
|
||||
List<SeckillTimeDto> list = new ArrayList<>();
|
||||
int today = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(new Date()));
|
||||
yxSystemGroupDataList.forEach(i -> {
|
||||
String jsonStr = i.getValue();
|
||||
JSONObject jsonObject = JSON.parseObject(jsonStr);
|
||||
int time = Integer.valueOf(jsonObject.get("time").toString());//开启时间(几点) 5
|
||||
int continued = Integer.valueOf(jsonObject.get("continued").toString());//活动持续事件 3
|
||||
String rule="";
|
||||
if (jsonObject.get("rule")!=null){
|
||||
rule=jsonObject.get("rule").toString();
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH");
|
||||
String nowTime = sdf.format(new Date());
|
||||
String index = nowTime.substring(0, 1);
|
||||
int currentHour = "0".equals(index) ? Integer.valueOf(nowTime.substring(1, 2)) : Integer.valueOf(nowTime);
|
||||
SeckillTimeDto seckillTimeDto = new SeckillTimeDto();
|
||||
seckillTimeDto.setId(i.getId());
|
||||
//活动结束时间
|
||||
int activityEndHour = time + continued;
|
||||
if (activityEndHour > 24) {
|
||||
seckillTimeDto.setState("即将开始");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(2);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(today + activityEndHour * 3600);
|
||||
} else {
|
||||
if (currentHour >= time && currentHour < activityEndHour) {
|
||||
seckillTimeDto.setState("抢购中");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(1);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(today + activityEndHour * 3600);
|
||||
seckillTimeIndex.set(yxSystemGroupDataList.indexOf(i));
|
||||
} else if (currentHour < time) {
|
||||
seckillTimeDto.setState("即将开始");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(2);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(OrderUtil.dateToTimestamp(new Date()) + activityEndHour * 3600);
|
||||
} else if (currentHour >= activityEndHour) {
|
||||
seckillTimeDto.setState("已结束");
|
||||
seckillTimeDto.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00");
|
||||
seckillTimeDto.setStatus(0);
|
||||
seckillTimeDto.setRule(rule);
|
||||
seckillTimeDto.setStop(today + activityEndHour * 3600);
|
||||
}
|
||||
}
|
||||
list.add(seckillTimeDto);
|
||||
});
|
||||
seckillConfigVo.setSeckillTimeIndex(seckillTimeIndex.get());
|
||||
seckillConfigVo.setSeckillTime(list);
|
||||
return seckillConfigVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 产品详情
|
||||
* @param id 砍价商品id
|
||||
@@ -159,6 +238,18 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl<YxStoreSeckillMap
|
||||
});
|
||||
return yxStoreSeckillQueryVos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<YxStoreSeckillQueryVo> getIndexList() {
|
||||
SeckillConfigVo seckillConfigVo=this.getStoreSeckil();
|
||||
if (seckillConfigVo.getSeckillTime().size()==0){
|
||||
return null;
|
||||
}else {
|
||||
int timeId=seckillConfigVo.getSeckillTime().get(seckillConfigVo.getSeckillTimeIndex()).getId();
|
||||
return this.getList(1,10,timeId);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 秒杀产品列表(首页用)
|
||||
* @param page page
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package co.yixiang.modules.monitor.rest;
|
||||
|
||||
import co.yixiang.constant.ShopConstants;
|
||||
import co.yixiang.logging.aop.log.Log;
|
||||
import co.yixiang.modules.aop.ForbidSubmit;
|
||||
import co.yixiang.modules.monitor.domain.vo.RedisVo;
|
||||
import co.yixiang.modules.monitor.service.RedisService;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -30,7 +32,7 @@ public class BxgRedisController {
|
||||
|
||||
@Log("查询Redis缓存")
|
||||
@GetMapping(value = "/redis")
|
||||
@PreAuthorize("@ss.hasAnyPermissions('ADMIN','REDIS_ALL','REDIS_SELECT')")
|
||||
// @PreAuthorize("@ss.hasAnyPermissions('ADMIN','REDIS_ALL','REDIS_SELECT')")
|
||||
public ResponseEntity getRedis(String key, Pageable pageable){
|
||||
return new ResponseEntity(redisService.findByKey(key,pageable), HttpStatus.OK);
|
||||
}
|
||||
@@ -38,12 +40,20 @@ public class BxgRedisController {
|
||||
@ForbidSubmit
|
||||
@Log("删除Redis缓存")
|
||||
@DeleteMapping(value = "/redis")
|
||||
@PreAuthorize("@ss.hasAnyPermissions('ADMIN','REDIS_ALL','REDIS_DELETE')")
|
||||
// @PreAuthorize("@ss.hasAnyPermissions('ADMIN','REDIS_ALL','REDIS_DELETE')")
|
||||
public ResponseEntity delete(@RequestBody RedisVo resources){
|
||||
redisService.delete(resources.getKey());
|
||||
return new ResponseEntity(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("删除Redis缓存")
|
||||
@GetMapping(value = "/del")
|
||||
@CacheEvict(cacheNames = { ShopConstants.ZSW_REDIS_INDEX_KEY})
|
||||
public ResponseEntity del(){
|
||||
return new ResponseEntity(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@ForbidSubmit
|
||||
@Log("清空Redis缓存")
|
||||
@DeleteMapping(value = "/redis/all")
|
||||
|
||||
@@ -72,6 +72,8 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
@Autowired
|
||||
private WxbotMsgUtil wxbotMsgUtil;
|
||||
|
||||
@Autowired
|
||||
private YxUserService yxUserService;
|
||||
@Override
|
||||
public boolean supportsEventType(Class<? extends ApplicationEvent> aClass) {
|
||||
return aClass == TemplateEvent.class;
|
||||
@@ -112,6 +114,12 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
}
|
||||
break;
|
||||
case TYPE_2:
|
||||
//这里同意退款所以需要扣除用户对应的成长值
|
||||
YxUser yxUser=yxUserService.lambdaQuery().eq(YxUser::getUid,templateBean.getUid()).one();
|
||||
Double price=Double.valueOf(templateBean.getPrice());
|
||||
//减去成长值
|
||||
yxUser.setGrowth(yxUser.getGrowth()>(int)Math.round(price)?yxUser.getGrowth()-(int)Math.round(price):0);
|
||||
yxUserService.updateById(yxUser);
|
||||
//处理退款与消息
|
||||
if (PayTypeEnum.WEIXIN.getValue().equals(templateBean.getPayType())) {
|
||||
BigDecimal bigDecimal = new BigDecimal("100");
|
||||
|
||||
+1
-1
@@ -300,7 +300,7 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
|
||||
|
||||
//无其他排序条件时,防止因为商品排序导致商品重复
|
||||
if (StringUtils.isNullOrEmpty(productQueryParam.getPriceOrder()) && StringUtils.isNullOrEmpty(productQueryParam.getSalesOrder())) {
|
||||
wrapper.orderByDesc(YxStoreProduct::getId);
|
||||
// wrapper.orderByDesc(YxStoreProduct::getId);
|
||||
wrapper.orderByDesc(YxStoreProduct::getSort);
|
||||
}
|
||||
Page<YxStoreProduct> pageModel = new Page<>(productQueryParam.getPage(),
|
||||
|
||||
@@ -22,7 +22,7 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
|
||||
|
||||
@Override
|
||||
public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
|
||||
log.info("value1:{}",value);
|
||||
// log.info("value1:{}",value);
|
||||
if (value != null) {
|
||||
DecimalFormat df2 =new DecimalFormat("0.00");
|
||||
gen.writeString(df2.format(value));
|
||||
@@ -33,7 +33,7 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
|
||||
|
||||
@Override
|
||||
public void serializeWithType(BigDecimal value, JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer) throws IOException {
|
||||
log.info("value2:{}",value);
|
||||
// log.info("value2:{}",value);
|
||||
if (value != null) {
|
||||
DecimalFormat df2 =new DecimalFormat("0.00");
|
||||
gen.writeString(df2.format(value));
|
||||
|
||||
Reference in New Issue
Block a user