验证码

个人中心-菜单页
首页接口
预约到店(店铺列表)
通用商品列表
登录 退出登录
商品详情(缺少评价部分)
订单页 列表 详情
This commit is contained in:
2024-04-29 10:22:32 +08:00
parent d86506da76
commit d391f136bf
44 changed files with 1301 additions and 418 deletions

View File

@@ -0,0 +1,139 @@
package com.chaozhanggui.system.cashierservice.service;
import com.chaozhanggui.system.cashierservice.dao.TbProductMapper;
import com.chaozhanggui.system.cashierservice.dao.TbPurchaseNoticeMapper;
import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper;
import com.chaozhanggui.system.cashierservice.entity.*;
import com.chaozhanggui.system.cashierservice.dao.TbGroupOrderInfoMapper;
import com.chaozhanggui.system.cashierservice.entity.dto.GroupOrderDto;
import com.chaozhanggui.system.cashierservice.entity.vo.GroupOrderDetailsVo;
import com.chaozhanggui.system.cashierservice.entity.vo.GroupOrderListVo;
import com.chaozhanggui.system.cashierservice.entity.vo.ProductVo;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.DateUtils;
import com.chaozhanggui.system.cashierservice.util.JSONUtil;
import com.chaozhanggui.system.cashierservice.util.LocationUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
@Service
@Slf4j
public class GroupOrderInfoService{
@Autowired
private TbShopInfoMapper shopInfoMapper;
@Autowired
private TbProductMapper tbProductMapper;
@Resource
private TbGroupOrderInfoMapper tbGroupOrderInfoMapper;
@Resource
private TbPurchaseNoticeMapper noticeMapper;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
public Result queryById(Integer id,String lng,String lat) {
TbGroupOrderInfo groupOrder = tbGroupOrderInfoMapper.queryById(id);
GroupOrderDetailsVo result=new GroupOrderDetailsVo();
result.setProName(groupOrder.getProName());
result.setProImg(groupOrder.getProImg());
TbPurchaseNotice tbPurchaseNotice = noticeMapper.queryByCouponId(groupOrder.getProId());
result.setAvaTime(tbPurchaseNotice.getAvailableTime()+" | 到店吃");
// result.setProDetail();
result.setOrderAmount(groupOrder.getOrderAmount());
result.setExpDate(groupOrder.getNumber()+"张可用 | "+ DateUtils.getTimeM(groupOrder.getExpDate()));
result.setRefundAble(groupOrder.getRefundAble());
List<String> coupons = Arrays.asList(groupOrder.getCouponNo().split(","));
List<String> couponUrls = Arrays.asList(groupOrder.getCouponUrl().split(","));
result.setCouponNo(coupons);
result.setCouponUrl(couponUrls);
TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(groupOrder.getShopId());
result.setShopName(shopInfo.getShopName());
BigDecimal distance = LocationUtils.getDistanceFrom2LngLat(
Double.parseDouble(lng), Double.parseDouble(lat),
Double.parseDouble(shopInfo.getLng()), Double.parseDouble(shopInfo.getLat()));
result.setDistances(distance.toString());
result.setAddress(shopInfo.getAddress());
result.setShopPhone(shopInfo.getPhone());
TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(groupOrder.getProId());
result.setTagVos(JSONUtil.parseListTNewList(product.getGroupSnap(), ProductVo.class));
result.setNotice(tbPurchaseNotice);
result.setOrderNo(groupOrder.getOrderNo());
result.setPhone(groupOrder.getPhone());
result.setPayTime(DateUtils.getTime(groupOrder.getPayTime()));
result.setNumber(groupOrder.getNumber());
result.setPayAmount(groupOrder.getPayAmount());
return Result.success(CodeEnum.SUCCESS,result);
}
/**
* 分页查询
* @return 查询结果
*/
public Result queryByPage(GroupOrderDto param) {
PageHelper.startPage(param.getPage(), param.getSize());
List<GroupOrderListVo> tbGroupOrderInfos = tbGroupOrderInfoMapper.queryAll(param);
return Result.success(CodeEnum.SUCCESS,new PageInfo(tbGroupOrderInfos));
}
/**
* 新增数据
*
* @param tbGroupOrderInfo 实例对象
* @return 实例对象
*/
public Result insert(TbGroupOrderInfo tbGroupOrderInfo) {
int insert = tbGroupOrderInfoMapper.insert(tbGroupOrderInfo);
if(insert>0){
return new Result(CodeEnum.SUCCESS);
}else {
return new Result(CodeEnum.FAIL);
}
}
/**
* 修改数据
*
* @param tbGroupOrderInfo 实例对象
* @return 实例对象
*/
public Result update(TbGroupOrderInfo tbGroupOrderInfo) {
int update = tbGroupOrderInfoMapper.update(tbGroupOrderInfo);
if(update>0){
return new Result(CodeEnum.SUCCESS);
}else {
return new Result(CodeEnum.FAIL);
}
}
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
public boolean deleteById(Integer id) {
return this.tbGroupOrderInfoMapper.deleteById(id) > 0;
}
}

View File

@@ -20,9 +20,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestHeader;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -43,65 +43,35 @@ public class HomeDistrictService {
@Resource
private SysDictDetailMapper sysDictDetailMapper;
public Result queryShopListByPage(HomeBaseDto param, String environment) {
PageHelper.startPage(param.getPage(), param.getSize());
List<TbPlatformDict> carouselList = platformDictMapper.queryAllByType("subShop", environment);
Map<String, double[]> topAndBottomMap = LocationUtils.returnLLSquarePoint(
Double.parseDouble(param.getLng()),
Double.parseDouble(param.getLat()),
param.getDistanceInKm());
List<SubShopVo> subShopVos = shopInfoMapper.selShopInfoByGps(
topAndBottomMap.get("rightTopPoint")[1],//109.06198684730003
topAndBottomMap.get("rightTopPoint")[0],//34.39724773780949
topAndBottomMap.get("leftBottomPoint")[1],//108.88884915269998
topAndBottomMap.get("leftBottomPoint")[0],//34.288450262190516
param.getAddress(), param.getLng(), param.getLat());//西安市
for (SubShopVo subShopVo : subShopVos) {//距离计算
if (StringUtils.isNotBlank(subShopVo.getLat()) && StringUtils.isNotBlank(subShopVo.getLng())) {
double distance = LocationUtils.getDistanceFrom2LngLat(
Double.parseDouble(param.getLng()), Double.parseDouble(param.getLat()),
Double.parseDouble(subShopVo.getLng()), Double.parseDouble(subShopVo.getLat()));
subShopVo.setDistances(Double.toString(distance));
}
}
CommonPageVo result = new CommonPageVo();
PageInfo pageInfo = new PageInfo();
pageInfo.setList(subShopVos);
result.setResult(pageInfo);
result.setCarousel(JSONUtil.parseListTNewList(carouselList, HomeCarouselVo.class));
result.setTitle("预约到店");
return Result.success(CodeEnum.SUCCESS, result);
}
/**
* 通用商品页
*/
public Result proList(HomeDto param, String environment) throws ExecutionException, InterruptedException {
CommonPageVo result = new CommonPageVo();
// title + 顶部图
public Result topCommon(HomeDto param, String environment){
CommonVo result = new CommonVo();
String type = param.getType();
//预约到店
if (StringUtils.isNotBlank(param.getType())) {
TbCouponCategory tbCouponCategory = couponCategoryMapper.queryById(Integer.valueOf(param.getType()));
result.setTitle(tbCouponCategory.getName());
List<TbPlatformDict> carouselList = platformDictMapper.queryAllByType(param.getType(), environment);
if (!CollectionUtils.isEmpty(carouselList)) {
if(type.equals("subShop")){
List<TbPlatformDict> carouselList = platformDictMapper.queryAllByType(type,environment);
result.setCarousel(JSONUtil.parseListTNewList(carouselList, HomeCarouselVo.class));
result.setTitle(carouselList.get(0).getName());
}else {//商品分类页
TbCouponCategory tbCouponCategory = couponCategoryMapper.queryById(Integer.valueOf(param.getType()));
result.setTitle(tbCouponCategory.getName());
List<TbPlatformDict> carouselList = platformDictMapper.queryAllByType(param.getType(), environment);
if (!CollectionUtils.isEmpty(carouselList)) {
result.setCarousel(JSONUtil.parseListTNewList(carouselList, HomeCarouselVo.class));
}
List<SysDict> sysDicts = sysDictDetailMapper.selectByType(null);
List<DicDetailVO> dicDetailVO = new ArrayList<>();
for (SysDict sysDictsList : sysDicts) {
DicDetailVO dicDetailVOList = new DicDetailVO();
dicDetailVOList.setDictName(sysDictsList.getDictName());
dicDetailVOList.setName(sysDictsList.getName());
dicDetailVOList.setDescription(sysDictsList.getDescription());
dicDetailVOList.setDetail(sysDictDetailMapper.selectByDictId(sysDictsList.getDictId()));
dicDetailVOList.setIsChild((sysDictsList.getIsChild() == null || sysDictsList.getIsChild() == 0) ? false : true);
dicDetailVO.add(dicDetailVOList);
}
result.setMenu(dicDetailVO);
}
List<SysDict> sysDicts = sysDictDetailMapper.selectByType(null);
List<DicDetailVO> dicDetailVO = new ArrayList<>();
for (SysDict sysDictsList : sysDicts) {
DicDetailVO dicDetailVOList = new DicDetailVO();
dicDetailVOList.setDictName(sysDictsList.getDictName());
dicDetailVOList.setName(sysDictsList.getName());
dicDetailVOList.setDescription(sysDictsList.getDescription());
dicDetailVOList.setDetail(sysDictDetailMapper.selectByDictId(sysDictsList.getDictId()));
dicDetailVOList.setIsChild((sysDictsList.getIsChild() == null || sysDictsList.getIsChild() == 0) ? false : true);
dicDetailVO.add(dicDetailVOList);
}
result.setMenu(dicDetailVO);
} else {
if (param.getOrderBy() != null) {
if (param.getOrderBy() == 0) {
@@ -130,12 +100,40 @@ public class HomeDistrictService {
}
}
}
List<HomeVO> products = productService.products(param);
PageInfo pageInfo = new PageInfo();
pageInfo.setList(products);
result.setResult(pageInfo);
return Result.success(CodeEnum.SUCCESS, result);
}
public Result queryShopListByPage(HomeBaseDto param) {
PageHelper.startPage(param.getPage(), param.getSize());
Map<String, double[]> topAndBottomMap = LocationUtils.returnLLSquarePoint(
Double.parseDouble(param.getLng()),
Double.parseDouble(param.getLat()),
param.getDistanceInKm());
List<SubShopVo> subShopVos = shopInfoMapper.selShopInfoByGps(
topAndBottomMap.get("rightTopPoint")[1],//109.06198684730003
topAndBottomMap.get("rightTopPoint")[0],//34.39724773780949
topAndBottomMap.get("leftBottomPoint")[1],
topAndBottomMap.get("leftBottomPoint")[0],
param.getAddress(), param.getLng(), param.getLat());//西安市
for (SubShopVo subShopVo : subShopVos) {//距离计算
if (StringUtils.isNotBlank(subShopVo.getLat()) && StringUtils.isNotBlank(subShopVo.getLng())) {
BigDecimal distance = LocationUtils.getDistanceFrom2LngLat(
Double.parseDouble(param.getLng()), Double.parseDouble(param.getLat()),
Double.parseDouble(subShopVo.getLng()), Double.parseDouble(subShopVo.getLat()));
subShopVo.setDistances(distance.toString());
}
}
PageInfo pageInfo = new PageInfo();
pageInfo.setList(subShopVos);
return Result.success(CodeEnum.SUCCESS, pageInfo);
}
/**
* 通用商品页
*/
public Result proList(HomeDto param) throws ExecutionException, InterruptedException {
PageInfo products = productService.products(param);
return Result.success(CodeEnum.SUCCESS, products);
}
}

View File

@@ -1,30 +1,30 @@
package com.chaozhanggui.system.cashierservice.service;
import com.chaozhanggui.system.cashierservice.dao.*;
import com.chaozhanggui.system.cashierservice.entity.*;
import com.chaozhanggui.system.cashierservice.dao.SysDictDetailMapper;
import com.chaozhanggui.system.cashierservice.dao.TbPlatformDictMapper;
import com.chaozhanggui.system.cashierservice.dao.TbProductSkuMapper;
import com.chaozhanggui.system.cashierservice.entity.Enum.LogoEnum;
import com.chaozhanggui.system.cashierservice.entity.SysDict;
import com.chaozhanggui.system.cashierservice.entity.TbPlatformDict;
import com.chaozhanggui.system.cashierservice.entity.dto.HomeDto;
import com.chaozhanggui.system.cashierservice.entity.vo.*;
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.*;
import com.chaozhanggui.system.cashierservice.util.DateUtils;
import com.chaozhanggui.system.cashierservice.util.JSONUtil;
import com.chaozhanggui.system.cashierservice.util.Threads;
import com.chaozhanggui.system.cashierservice.util.RandomUtil;
import com.chaozhanggui.system.cashierservice.util.StringUtil;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
/**
* @author lyf
@@ -100,8 +100,8 @@ public class HomePageService {
/**
* 商品列表
*/
public Result proList(HomeDto homeDto, String environmen) throws ExecutionException, InterruptedException {
List<HomeVO> products = productService.products(homeDto);
public Result proList(HomeDto homeDto) throws ExecutionException, InterruptedException {
PageInfo products = productService.products(homeDto);
return Result.success(CodeEnum.SUCCESS, products);
}

View File

@@ -255,6 +255,18 @@ public class LoginService {
return Result.success(CodeEnum.ENCRYPT, tbUserInfo);
}
public Result upPass(String userId,String oldPass,String newPass) {
TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(userId));
if(!tbUserInfo.getPassword().equals(oldPass)){
return Result.success(CodeEnum.FAIL_OLDPASS);
}
if(tbUserInfo.getPassword().equals(newPass)){
return Result.success(CodeEnum.FAIL_NEWPASS);
}
tbUserInfo.setPassword(newPass);
return upUserInfo(tbUserInfo);
}
public Result upUserInfo(TbUserInfo userInfo) {
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
return Result.success(CodeEnum.SUCCESS);

View File

@@ -1,6 +1,5 @@
package com.chaozhanggui.system.cashierservice.service;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
@@ -16,6 +15,7 @@ import com.chaozhanggui.system.cashierservice.util.JSONUtil;
import com.chaozhanggui.system.cashierservice.util.LocationUtils;
import com.chaozhanggui.system.cashierservice.util.Threads;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -53,8 +53,6 @@ public class ProductService {
@Resource
private TagProductDeptsMapper tagProductDeptsMapper;
@Resource
private TbMerchantCouponMapper merchantCouponMapper;
@Resource
private TbPlatformDictMapper platformDictMapper;
@Resource
private TbShopUnitMapper unitMapper;
@@ -144,101 +142,81 @@ public class ProductService {
* 销量榜
* 咖啡饮品
*/
public List<HomeVO> products(HomeDto homeDto) throws ExecutionException, InterruptedException {
public PageInfo products(HomeDto homeDto) throws ExecutionException, InterruptedException {
PageHelper.startPage(homeDto.getPage(), homeDto.getSize());
//经纬度(附近一km)
Map<String, double[]> topAndBottomMap = LocationUtils.returnLLSquarePoint(
Double.parseDouble(homeDto.getLng()), Double.parseDouble(homeDto.getLat()), homeDto.getDistanceInKm());
List<CouAndShopVo> tbMerchantCoupons = merchantCouponMapper.queryAllByPage(
List<ShopGroupInfoVo> shopGroupInfoVos = tbProductMapper.selGroups(
homeDto.getType(),
topAndBottomMap.get("rightTopPoint")[1], topAndBottomMap.get("rightTopPoint")[0],
topAndBottomMap.get("leftBottomPoint")[1], topAndBottomMap.get("leftBottomPoint")[0],
homeDto.getAddress(), homeDto.getOrderBy().toString(), homeDto.getLng(), homeDto.getLat());
//统计shopId以及productId
List<String> shopIds = new ArrayList<>();
List<String> productIds = new ArrayList<>();
List<Integer> productIdsInt = new ArrayList<>();
for (CouAndShopVo coupon : tbMerchantCoupons) {
shopIds.add(coupon.getShopId());
productIds.add(coupon.getRelationIds());
productIdsInt.add(Integer.valueOf(coupon.getRelationIds()));
}
CompletableFuture<List<TbShopInfo>> shopInfo = CompletableFuture.supplyAsync(() ->
tbShopInfoMapper.selectByIds(shopIds));
CompletableFuture<List<TbProduct>> product = CompletableFuture.supplyAsync(() ->
tbProductMapper.selectByIds((productIds)));
CompletableFuture<List<TbProductSku>> productSku = CompletableFuture.supplyAsync(() ->
tbProductSkuMapper.selectSkus((productIds)));
CompletableFuture<List<TagProductVO>> dictPro = CompletableFuture.supplyAsync(() ->
tagProductDeptsMapper.queryTagAndProduct(productIdsInt));
Threads.call(shopInfo, product, productSku, dictPro);
List<Integer> productIds = shopGroupInfoVos.stream().map(ShopGroupInfoVo::getProId).collect(Collectors.toList());
List<String> stringList = productIds.stream()
.map(Object::toString) // 将 Integer 对象映射为 String 对象
.collect(Collectors.toList());
List<TbProductSku> tbProductSkus = tbProductSkuMapper.selectSkus(stringList);
List<TagProductVO> dictPro = tagProductDeptsMapper.queryTagAndProduct(productIds);
//组装
List<HomeVO> homeVOList = new ArrayList<>();
for (CouAndShopVo o : tbMerchantCoupons) {
for (ShopGroupInfoVo o : shopGroupInfoVos) {
HomeVO homeVO = new HomeVO();
homeVO.setId(o.getId());
for (TbShopInfo tbShopInfo : shopInfo.get()) {
if (o.getShopId().equals(tbShopInfo.getId().toString())) {
homeVO.setShopName(tbShopInfo.getShopName());
homeVO.setImage(tbShopInfo.getLogo());
if (StringUtils.isBlank(tbShopInfo.getTag())) {
homeVO.setShopTag(new ArrayList<>());
} else {
List<Integer> shopTagIds = Arrays.stream(tbShopInfo.getTag().split(","))
.map(Integer::parseInt)
.collect(Collectors.toList());
List<TbPlatformDict> tbPlatformDicts = platformDictMapper.queryByIdList(shopTagIds);
homeVO.setShopTag(JSONUtil.parseListTNewList(tbPlatformDicts, TagVo.class));
}
if (StringUtils.isNotBlank(tbShopInfo.getLat()) && StringUtils.isNotBlank(tbShopInfo.getLng())) {
double distance = LocationUtils.getDistanceFrom2LngLat(
Double.parseDouble(homeDto.getLng()), Double.parseDouble(homeDto.getLat()),
Double.parseDouble(tbShopInfo.getLng()), Double.parseDouble(tbShopInfo.getLat()));
homeVO.setDistances(Double.toString(distance));
}
homeVO.setId(o.getProId());
homeVO.setShopName(o.getShopName());
homeVO.setShopImage(o.getShopImg());
if (StringUtils.isBlank(o.getShopTag())) {
homeVO.setShopTag(new ArrayList<>());
} else {
List<Integer> shopTagIds = Arrays.stream(o.getShopTag().split(","))
.map(Integer::parseInt)
.collect(Collectors.toList());
List<TbPlatformDict> tbPlatformDicts = platformDictMapper.queryByIdList(shopTagIds);
homeVO.setShopTag(JSONUtil.parseListTNewList(tbPlatformDicts, TagVo.class));
}
if (StringUtils.isNotBlank(o.getLat()) && StringUtils.isNotBlank(o.getLng())) {
BigDecimal distance = LocationUtils.getDistanceFrom2LngLat(
Double.parseDouble(homeDto.getLng()), Double.parseDouble(homeDto.getLat()),
Double.parseDouble(o.getLng()), Double.parseDouble(o.getLat()));
homeVO.setDistances(distance.toString());
}
homeVO.setProductName(o.getProName());
homeVO.setImage(o.getProImg());
for (TagProductVO tagProductVO : dictPro) {
if (o.getProId().toString().equals(tagProductVO.getProductId().toString())) {
homeVO.getProTag().add(tagProductVO);
}
}
for (TbProduct tbProduct : product.get()) {
if (o.getRelationIds().equals(tbProduct.getId().toString())) {
homeVO.setProductName(o.getTitle());
homeVO.setImage(tbProduct.getCoverImg());
homeVO.setProductId(tbProduct.getId());
}
}
for (TbProductSku tbProductSku : productSku.get()) {
if (o.getRelationIds().equals(tbProductSku.getProductId())) {
for (TbProductSku tbProductSku : tbProductSkus) {
if (o.getProId().toString().equals(tbProductSku.getProductId())) {
//原价
if (tbProductSku.getSalePrice().compareTo(BigDecimal.ZERO) == 0) {
if (tbProductSku.getOriginPrice().compareTo(BigDecimal.ZERO) == 0) {
homeVO.setOriginPrice(BigDecimal.ZERO);
homeVO.setDiscount(BigDecimal.ZERO);
} else {
homeVO.setOriginPrice(tbProductSku.getSalePrice());
homeVO.setDiscount(new BigDecimal(o.getAmount()).divide(tbProductSku.getSalePrice(), 2, RoundingMode.DOWN).multiply(BigDecimal.TEN));
homeVO.setOriginPrice(tbProductSku.getOriginPrice());
homeVO.setDiscount(tbProductSku.getOriginPrice().divide(tbProductSku.getSalePrice(), 2, RoundingMode.DOWN).multiply(BigDecimal.TEN));
}
//销量
homeVO.setRealSalesNumber(new BigDecimal(o.getNumber()));
//现价
homeVO.setSalePrice(new BigDecimal(o.getAmount().toString()));
homeVO.setSalePrice(new BigDecimal(tbProductSku.getSalePrice().toString()));
// 共省金额
homeVO.setSave(homeVO.getOriginPrice().subtract(homeVO.getSalePrice()));
}
}
for (TagProductVO tagProductVO : dictPro.get()) {
if (o.getRelationIds().equals(tagProductVO.getProductId().toString())) {
homeVO.getProTag().add(tagProductVO);
}
}
homeVO.setEndTime(DateUtils.getDayEndLong());
homeVOList.add(homeVO);
}
return homeVOList;
PageInfo pageInfo = new PageInfo<>(shopGroupInfoVos);
pageInfo.setList(homeVOList);
return pageInfo;
}
/**
* 团购卷详情
*
@@ -246,47 +224,53 @@ public class ProductService {
* @return
* @throws Exception
*/
public Result productInfo(Integer productId,String environment) throws Exception {
TbMerchantCoupon tbMerchantCoupon = merchantCouponMapper.queryById(productId);
CompletableFuture<TbShopInfo> shopInfo = CompletableFuture.supplyAsync(() ->
tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(tbMerchantCoupon.getShopId())));
public Result productInfo(Integer productId, String lat, String lng, String environment) throws Exception {
CompletableFuture<TbProduct> product = CompletableFuture.supplyAsync(() ->
tbProductMapper.selectById(Integer.valueOf(tbMerchantCoupon.getRelationIds())));
tbProductMapper.selectById(productId));
CompletableFuture<List<TbProductSku>> productSku = CompletableFuture.supplyAsync(() ->
tbProductSkuMapper.selectSku(tbMerchantCoupon.getRelationIds()));
tbProductSkuMapper.selectSku(productId.toString()));
CompletableFuture<List<TagProductVO>> dictPro = CompletableFuture.supplyAsync(() ->
tagProductDeptsMapper.queryTagByProductId(tbMerchantCoupon.getRelationIds()));
CompletableFuture<TbPurchaseNotice> purchaseNotice = CompletableFuture.supplyAsync(() ->
purchaseNoticeMapper.queryByCouponId(tbMerchantCoupon.getId()));
Threads.call(shopInfo, product, productSku, dictPro);
tagProductDeptsMapper.queryTagByProductId(productId.toString()));
Threads.call(product, productSku, dictPro);
TbProduct tbProduct = product.get();
TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(tbProduct.getShopId()));
TbPurchaseNotice tbPurchaseNotice = purchaseNoticeMapper.queryByCouponId(tbProduct.getId());
ProductInfoVo productInfo = new ProductInfoVo();
// 图片组装
TbProduct tbProduct = product.get();
TbShopInfo tbShopInfo = shopInfo.get();
if (StringUtils.isNotBlank(tbProduct.getImages())) {
productInfo.setImages(JSON.parseArray(tbProduct.getImages()));
} else {
productInfo.setImages(new JSONArray());
}
//折扣
productInfo.setDiscount(tbMerchantCoupon.getRatio());
//价格组装
for (TbProductSku tbProductSku : productSku.get()) {
productInfo.setOriginPrice(tbProductSku.getSalePrice());
productInfo.setRealSalesNumber(tbProductSku.getRealSalesNumber() == null ? BigDecimal.ZERO : new BigDecimal(tbProductSku.getRealSalesNumber()));
Float discount = productInfo.getDiscount();
BigDecimal discountDecimal = new BigDecimal(discount);
productInfo.setSalePrice(tbProductSku.getSalePrice().multiply((discountDecimal.multiply(new BigDecimal("0.1")))));
//原价
if (tbProductSku.getSalePrice().compareTo(BigDecimal.ZERO) == 0) {
productInfo.setOriginPrice(BigDecimal.ZERO);
productInfo.setDiscount(BigDecimal.ZERO);
} else {
productInfo.setOriginPrice(tbProductSku.getSalePrice());
productInfo.setDiscount(tbProductSku.getOriginPrice().divide(tbProductSku.getSalePrice(), 2, RoundingMode.DOWN).multiply(BigDecimal.TEN));
}
//现价
productInfo.setSalePrice(new BigDecimal(tbProductSku.getSalePrice().toString()));
}
//销量
productInfo.setRealSalesNumber(new BigDecimal(tbProduct.getRealSalesNumber()));
//名称
productInfo.setProductName(tbProduct.getName());
//店铺
productInfo.setShopName(tbShopInfo.getShopName() + (StringUtils.isNotBlank(tbShopInfo.getChainName()) ? "(" + tbShopInfo.getChainName() + ")" : ""));
productInfo.setPhone(tbShopInfo.getPhone());
productInfo.setBusinessTime(tbShopInfo.getBusinessTime());
// productInfo.setDistances();//距离
BigDecimal distance = LocationUtils.getDistanceFrom2LngLat(
Double.parseDouble(lng), Double.parseDouble(lat),
Double.parseDouble(tbShopInfo.getLng()), Double.parseDouble(tbShopInfo.getLat()));
productInfo.setDistances(distance.toString());//距离
productInfo.setAddress(tbShopInfo.getAddress());
//商品 暂时只做单商品
@@ -297,23 +281,61 @@ public class ProductService {
productVo.setNumber(1);
ProductVo.Food food = new ProductVo.Food();
food.setName(tbProduct.getName());
food.setUnit(tbShopUnit.getName());
food.setPrice(tbProduct.getLowPrice());
food.setUnitName(tbShopUnit.getName());
food.setLowPrice(tbProduct.getLowPrice());
for (TagProductVO tagProductVO : dictPro.get()) {
food.getProTag().add(tagProductVO);
}
productVo.getFoods().add(food);
productVo.getGoods().add(food);
productInfo.getProductList().add(productVo);
TbPurchaseNotice tbPurchaseNotice = purchaseNotice.get();
productInfo.setPurchaseNotice(tbPurchaseNotice);
List<TbPlatformDict> tbPlatformDicts = platformDictMapper.queryAllByType("prodetail", environment);
if(tbPurchaseNotice.getBookingType().startsWith("无需预约")){
List<TbPlatformDict> book = platformDictMapper.queryAllByType("prodetail-book", environment);
tbPlatformDicts.addAll(book);
if (tbPurchaseNotice != null) {
if (tbPurchaseNotice.getBookingType().startsWith("无需预约")) {
List<TbPlatformDict> book = platformDictMapper.queryAllByType("prodetail-book", environment);
tbPlatformDicts.addAll(book);
}
}
productInfo.setNoticeTag(JSONUtil.parseListTNewList(tbPlatformDicts, TagVo.class));
return Result.success(CodeEnum.SUCCESS, productInfo);
}
/**
* 订单确认页
*/
public Result orderConfirm(Integer productId, String environment) throws Exception {
CompletableFuture<TbProduct> product = CompletableFuture.supplyAsync(() ->
tbProductMapper.selectById(productId));
CompletableFuture<List<TbProductSku>> productSku = CompletableFuture.supplyAsync(() ->
tbProductSkuMapper.selectSku(productId.toString()));
CompletableFuture<TbPurchaseNotice> notice = CompletableFuture.supplyAsync(() ->
purchaseNoticeMapper.queryByCouponId(productId));
Threads.call(product, productSku,notice);
TbProduct tbProduct = product.get();
OrderConfirmVo confirmVo=new OrderConfirmVo();
confirmVo.setProImg(tbProduct.getCoverImg());
confirmVo.setProName(tbProduct.getName());
TbPurchaseNotice tbPurchaseNotice = notice.get();
confirmVo.setAvaTime(tbPurchaseNotice.getAvailableTime());
//价格组装
for (TbProductSku tbProductSku : productSku.get()) {
//原价
if (tbProductSku.getOriginPrice().compareTo(BigDecimal.ZERO) == 0) {
confirmVo.setOriginPrice(BigDecimal.ZERO);
confirmVo.setSave(tbProductSku.getSalePrice());
} else {
confirmVo.setOriginPrice(tbProductSku.getOriginPrice());
confirmVo.setSave(tbProductSku.getSalePrice());
}
//现价=售价
confirmVo.setSalePrice(tbProductSku.getSalePrice().subtract(tbProductSku.getOriginPrice()));
}
List<TbPlatformDict> tbPlatformDicts = platformDictMapper.queryAllByType("order_confirm_no_counpon",environment);
confirmVo.setCouponDetail(JSONUtil.parseListTNewList(tbPlatformDicts, TagVo.class).get(0));
return Result.success(CodeEnum.SUCCESS, confirmVo);
}
}

View File

@@ -12,7 +12,7 @@ import javax.annotation.Resource;
* @author ww
* @since 2024-04-12 14:50:10
*/
public class TbShopVideoService {
public class ShopVideoService {
@Resource
private TbShopVideoMapper tbShopVideoMapper;