Commit adbda99d authored by shiyu's avatar shiyu

拍卖详情

parent 9c918cb0
......@@ -3,6 +3,7 @@ package com.wwdz.ch.admin.controller;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.admin.service.SysIMService;
import com.wwdz.ch.admin.service.SysSupplierItemService;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.xxdxxs.service.FormHandler;
......@@ -42,10 +43,51 @@ public class SysSupplierItemController {
}
@ApiOperation(value = "编辑商品")
@PostMapping("/update")
public Result update(@RequestBody SupplierItemRequestDto dto) {
logger.info("编辑商品,请求参数:{}", JSON.toJSONString(dto));
if (dto.getId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return sysSupplierItemService.update(dto);
}
@ApiOperation(value = "查询商品列表")
@PostMapping("/findList")
public Result findList(@RequestBody SupplierItemRequestDto dto) {
logger.info("查询商品列表,请求参数:{}", JSON.toJSONString(dto));
return sysSupplierItemService.findList(dto);
}
@ApiOperation(value = "查询商品详情")
@PostMapping("/findDetail")
public Result findDetail(@RequestBody SupplierItemRequestDto dto) {
logger.info("查询商品详情,请求参数:{}", JSON.toJSONString(dto));
if (dto.getId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return sysSupplierItemService.findDetail(dto);
}
@ApiOperation(value = "商品上下架")
@PostMapping("/updateOnSale")
public Result updateOnSale(@RequestBody SupplierItemRequestDto dto) {
logger.info("商品上下架,请求参数:{}", JSON.toJSONString(dto));
if (dto.getId() == null || dto.getIsOnSale() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return sysSupplierItemService.updateOnSale(dto);
}
@ApiOperation(value = "删除商品")
@PostMapping("/delete")
public Result delete(@RequestBody SupplierItemRequestDto dto) {
logger.info("删除商品,请求参数:{}", JSON.toJSONString(dto));
if (dto.getId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return sysSupplierItemService.delete(dto);
}
}
......@@ -113,10 +113,13 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
supplierItemVo.setSupplyPrice(PriceUtil.convertPriceFenToYuan(supplierItem.getSupplyPrice()));
supplierItemVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(supplierItem.getDistributionPrice()));
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
if (supplierItem.getBuyLimitNum() == -1) {
supplierItemVo.setIsLimitBuy(false);
}
supplierItemVos.add(supplierItemVo);
//售出数量
long selledNum = distributionOrderDao.countSelledNum(supplierItem.getId());
supplierItemVo.setSelledNum(selledNum);
Long selledNum = distributionOrderDao.countSelledNum(supplierItem.getId());
supplierItemVo.setSelledNum(selledNum == null ? 0 : selledNum);
});
return Result.success(PageSearchResult.of(pageInfo, supplierItemVos));
} catch (Exception e) {
......@@ -130,10 +133,12 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
try {
SupplierItemVo supplierItemVo = new SupplierItemVo();
long itemId = dto.getId();
SupplierItem supplierItem = supplierItemDao.findById(itemId);
EntityMapper.copyAttribute(supplierItem, supplierItemVo);
supplierItemVo.setItemId(supplierItem.getId());
if (supplierItem.getBuyLimitNum() == -1) {
supplierItemVo.setIsLimitBuy(false);
}
supplierItemVo.setSupplyPrice(PriceUtil.convertPriceFenToYuan(supplierItem.getSupplyPrice()));
supplierItemVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(supplierItem.getDistributionPrice()));
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
......@@ -145,21 +150,59 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
}
@Override
@Transactional
public Result update(SupplierItemRequestDto dto) {
return null;
try {
//如果价格有改动,需要把分享的链接改为无效,先查询原来商品这使得价格
SupplierItem oldSupplierItem = supplierItemDao.findById(dto.getId());
long oldDistributionPrice = oldSupplierItem.getDistributionPrice();
if (oldDistributionPrice != PriceUtil.convertPriceFromStr(dto.getDistributionPrice())) {
//把该商品所关联的所有分享链接都改为无效
distributorShareRecordDao.updateDisEnabled(dto.getId());
logger.info("商品 id:{} 更改价格,分享链接改为无效", dto.getId());
}
SupplierItem supplierItem = new SupplierItem();
EntityMapper.copyAttribute(dto, supplierItem);
supplierItem.setDistributionPrice(PriceUtil.convertPriceFromStr(dto.getDistributionPrice()));
if (StringUtils.hasLength(dto.getSupplyPrice())) {
supplierItem.setSupplyPrice(PriceUtil.convertPriceFromStr(dto.getSupplyPrice()));
}
supplierItem.setImages(org.apache.commons.lang3.StringUtils.join(dto.getImages(), ";"));
supplierItem.setVideos(org.apache.commons.lang3.StringUtils.join(dto.getVideos(), ";"));
supplierItemDao.update(supplierItem);
return Result.success();
} catch (Exception e) {
logger.error("编辑商品失败 error : {}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return Result.failed();
}
public Result updateDistributionPrice(SupplierItemRequestDto dto) {
@Override
public Result updateOnSale(SupplierItemRequestDto dto) {
try {
SupplierItem supplierItem = new SupplierItem();
supplierItem.setId(dto.getId());
supplierItem.setDistributionPrice(PriceUtil.convertPriceFromStr(dto.getDistributionPrice()));
supplierItem.setIsOnSale(dto.getIsOnSale());
supplierItemDao.update(supplierItem);
return Result.success();
} catch (Exception e) {
logger.error("商品上下架失败 error : {}", e);
}
return Result.failed();
}
@Override
public Result delete(SupplierItemRequestDto dto) {
try {
SupplierItem supplierItem = new SupplierItem();
supplierItem.setId(dto.getId());
supplierItem.setIsDeleted(true);
supplierItemDao.update(supplierItem);
//把该商品所关联的所有分享链接都改为无效
distributorShareRecordDao.updateDisEnabled(dto.getId());
return Result.success();
} catch (Exception e) {
logger.error("商品修改供货价,设置分享链接无效 error : {}", e);
logger.error("商品删除失败 error : {}", e);
}
return Result.failed();
}
......
......@@ -37,6 +37,20 @@ public interface SysSupplierItemService {
Result update(SupplierItemRequestDto dto);
/**
* 上下架
* @param dto
* @return
*/
Result updateOnSale(SupplierItemRequestDto dto);
/**
* 删除商品
* @param dto
* @return
*/
Result delete(SupplierItemRequestDto dto);
}
......@@ -157,4 +157,43 @@ public class DistributionEnum {
/**
* 竞拍状态
*/
public enum AuctionUserStateEnum {
PROCESS(1, "出价"),
LEAD(2, "已领先"),
PRE_PAY(3, "立即支付"),
END(4, "竞拍结束")
;
private int code;
private String des;
AuctionUserStateEnum(int code, String des) {
this.code = code;
this.des = des;
}
public static String getNameByCode(int code) {
for (AuctionUserStateEnum auctionUserStateEnum : AuctionUserStateEnum.values()) {
if (code == auctionUserStateEnum.getCode()) {
return auctionUserStateEnum.getDes();
}
}
return null;
}
public int getCode() {
return code;
}
public String getDes() {
return des;
}
}
}
......@@ -105,4 +105,9 @@ public class SupplierItemVo implements Entity {
* 商品售出的数量
*/
private Long selledNum;
/**
* 是否限购
*/
private Boolean isLimitBuy = true;
}
......@@ -24,6 +24,14 @@ public interface AuctionRecordDao {
*/
int updateNotLead(long itemId);
/**
* 根据主键id更新记录
* 价格被反超时,设置islead字段为false
* @param id
* @return
*/
int updateNotLeadById(int id);
/**
* 查询出价记录
* @param dto
......
......@@ -34,6 +34,15 @@ public interface DistributionOrderDao {
*/
DistributionOrder findById(String distributionOrderId);
/**
* 查询该商品是否生成了订单
* 用于拍卖生成订单判断
* @param itemId
* @return
*/
DistributionOrder findByItemId(long itemId);
/**
* 根据买家id查询
* @param buyerId
......
......@@ -24,7 +24,7 @@ public class AuctionRecordRequestDto extends BaseRequestDto implements Entity {
/**
* 出价
*/
private Long price;
private String price;
/**
* 出价时间
......
......@@ -33,6 +33,14 @@ public class AuctionRecordDaoImpl implements AuctionRecordDao {
return auctionRecordMapper.updateByExampleSelective(auctionRecord, example);
}
@Override
public int updateNotLeadById(int id) {
AuctionRecord auctionRecord = new AuctionRecord();
auctionRecord.setId(id);
auctionRecord.setIsLead(false);
return auctionRecordMapper.updateByPrimaryKeySelective(auctionRecord);
}
@Override
public List<AuctionRecord> find(AuctionRecordRequestDto dto) {
AuctionRecordExample example = new AuctionRecordExample();
......
......@@ -43,6 +43,15 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao {
return distributionOrderMapper.selectOneByExample(example);
}
@Override
public DistributionOrder findByItemId(long itemId) {
DistributionOrderExample example = new DistributionOrderExample();
DistributionOrderExample.Criteria criteria = example.createCriteria();
criteria.andItemIdEqualTo(itemId);
return distributionOrderMapper.selectOneByExample(example);
}
@Override
public List<DistributionOrder> findByBuyerId(long buyerId) {
DistributionOrderExample example = new DistributionOrderExample();
......
......@@ -94,4 +94,17 @@ public class AuctionDetailVo implements Entity {
*/
private String description;
/**
* 用户的状态
* 出价、已领先、立即支付、竞拍结束
*/
private Integer userState;
private String userStateName;
/**
* 是否延长
*/
private Boolean isExtend;
}
......@@ -7,32 +7,109 @@ import com.wwdz.ch.db.dao.distribution.AuctionConfigDao;
import com.wwdz.ch.db.dao.distribution.AuctionRecordDao;
import com.wwdz.ch.db.domain.distribution.AuctionConfig;
import com.wwdz.ch.db.domain.distribution.AuctionRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto;
import com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordVo;
import com.wwdz.ch.wx.service.distribution.AuctionRecordService;
import com.wwdz.ch.wx.util.RedisUtil;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import java.time.Duration;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Service
public class AuctionRecordServiceImpl implements AuctionRecordService {
private static final Logger logger = LoggerFactory.getLogger(AuctionRecordServiceImpl.class);
private static final String LOCK_KEY_PRE = "AUCTION:";
@Autowired
AuctionConfigDao auctionConfigDao;
@Autowired
AuctionRecordDao auctionRecordDao;
@Autowired
RedissonClient redissonClient;
@Override
@Transactional
public Result createAuctionRecord(AuctionRecordRequestDto dto) {
return null;
long itemId = dto.getItemId();
String itemIdKey = LOCK_KEY_PRE + itemId;
RLock lock = redissonClient.getLock(itemIdKey);
try {
if (lock.tryLock(5, 5, TimeUnit.SECONDS)) {
Date now = new Date();
//查询竞拍配置信息
AuctionConfig auctionConfig = auctionConfigDao.findByItemId(itemId);
Date endTime = auctionConfig.getRealEndTime();
//当前查询出来的拍卖还没截拍,但是已过时间,则更新截拍的状态
if (auctionConfig.getIsValid() && now.after(endTime)) {
auctionConfigDao.setEnd(itemId);
return Result.failed("该商品已截拍");
} else if (!auctionConfig.getIsValid()) {
return Result.failed("该商品已截拍");
}
//查询当前最新的价格
AuctionRecord auctionRecord = auctionRecordDao.findLastedRecord(itemId);
long price = PriceUtil.convertPriceFromStr(dto.getPrice());
if (auctionRecord != null) {
long lastedPrice = auctionRecord.getPrice();
if (price <= lastedPrice) {
return Result.failed("当前出价已不是最高价,请刷新出价记录");
}
//把上次的最高价记录改为落后
auctionRecordDao.updateNotLeadById(auctionRecord.getId());
}
//插入最新出价记录
AuctionRecord addRecord = new AuctionRecord();
addRecord.setIsLead(true);
addRecord.setShareRecordId(dto.getShareRecordId());
addRecord.setCreateTime(now);
addRecord.setDistributorId(dto.getDistributorId());
addRecord.setItemId(itemId);
addRecord.setPrice(price);
addRecord.setUserId(dto.getUserId());
auctionRecordDao.insert(addRecord);
//如果当前时间是拍卖截止时间的最后五分钟内,则再延长五分钟
Instant instant = endTime.toInstant().minus(Duration.ofMinutes(5));
Date time = Date.from(instant);
if (now.after(time)) {
Instant afterInstant = endTime.toInstant().plus(Duration.ofMinutes(5));
Date newRealEndTime = Date.from(afterInstant);
auctionConfigDao.updateRealEndTime(itemId, newRealEndTime);
logger.info("商品id:{}, 用户id:{}, 本次出价时间: {}, 原先截拍时间为:{}, 延长截拍时间为{}", itemId, dto.getUserId(), now, endTime, newRealEndTime);
}
return Result.success();
} else {
return Result.failed("出价者较多,稍后再试");
}
} catch (Exception e) {
logger.error("扣减库存失败 error : {}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
return Result.failed("出价失败");
}
@Override
......
......@@ -22,6 +22,7 @@ import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderVo;
import com.wwdz.ch.wx.service.distribution.DistributionOrderService;
import com.wwdz.ch.wx.service.distribution.SendMsgService;
import com.xxdxxs.utils.EntityMapper;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -76,6 +77,9 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired
RefundOrderDao refundOrderDao;
@Autowired
RedissonClient redissonClient;
@Transactional
@Override
public Result createDistributionOrder(DistributionOrderRequestDto dto) {
......@@ -96,7 +100,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
return Result.failed("商品库存不足");
}
//商品限购数量
int buyLimitNum = supplierItem.getBuyLimitNum() == null ? 5 : supplierItem.getBuyLimitNum();
int buyLimitNum = supplierItem.getBuyLimitNum() == -1 ? 9999999 : supplierItem.getBuyLimitNum();
//检查该购买者是否超出限购数量
//1.查询购买者对该商品的历史购买记录
List<DistributionOrder> distributionOrders = distributionOrderDao.findValidOrderOfItemIdByBuyerId(dto.getBuyerId(), distributorShareRecord.getItemId());
......@@ -167,6 +171,56 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
}
@Override
public Result createAuctionOrder(DistributionOrderRequestDto dto) {
try {
String shareRecordId = dto.getShareRecordId();
String distributionOrderId = IdUtils.getOrderNumber(DISTRIBUTION_ORDER_PREFIX);
DistributionOrder distributionOrder = new DistributionOrder();
distributionOrder.setItemId(dto.getItemId());
distributionOrder.setItemNum(1);
distributionOrder.setShareRecordId(shareRecordId);
distributionOrder.setDistributionOrderId(distributionOrderId);
distributionOrder.setBuyerId(dto.getBuyerId());
distributionOrder.setBuyerOpenid(dto.getBuyerOpenid());
distributionOrder.setShopId(dto.getShopId());
distributionOrder.setSellerId(dto.getSellerId());
distributionOrder.setAmount(PriceUtil.convertPriceFromStr(dto.getAmount()));
distributionOrder.setAddressId(dto.getAddressId());
distributionOrder.setReceiverAddress(dto.getReceiverAddress());
distributionOrder.setReceiverName(dto.getReceiverName());
distributionOrder.setReceiverPhone(dto.getReceiverPhone());
distributionOrder.setCreateTime(new Date());
distributionOrder.setUpdateTime(new Date());
distributionOrder.setState(DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode());
distributionOrderDao.insert(distributionOrder);
Map<String, String> map = new HashMap<>();
map.put("distributionOrderId", distributionOrderId);
map.put("prepayId", null);
//计算分销商的利润
DistributorProfit distributorProfit = new DistributorProfit();
//供货成本价
SupplierItem supplierItem = supplierItemDao.findById(dto.getItemId());
//利润,该记录在用户未付款时未无效,仅用于在分销商查看订单详情时,计算预计利润
Double profit = distributionOrder.getAmount().doubleValue() * 0.03;
distributorProfit.setDistributionOrderId(distributionOrderId);
distributorProfit.setDistributorId(distributionOrder.getSellerId());
distributorProfit.setItemId(distributionOrder.getItemId());
distributorProfit.setItemNum(distributionOrder.getItemNum());
distributorProfit.setAmount(distributionOrder.getAmount());
distributorProfit.setItemCost(supplierItem.getDistributionPrice());
distributorProfit.setProfit((long) Math.floor(profit));
distributorProfit.setCreateTime(new Date());
distributorProfit.setIsValid(false);
distributorProfitDao.insert(distributorProfit);
return Result.success(map);
} catch (Exception e) {
logger.error("创建拍卖分销订单失败 error : {}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return Result.failed("拍卖分销订单下单失败");
}
@Override
public Result buySample(DistributionOrderRequestDto dto) {
try {
......
......@@ -12,10 +12,12 @@ import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.domain.Switch;
import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributorShareRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.wx.entity.vo.distribution.AuctionDetailVo;
import com.wwdz.ch.wx.service.distribution.DistributionOrderService;
import com.wwdz.ch.wx.service.distribution.SupplierItemService;
import com.xxdxxs.utils.DateUtils;
import com.xxdxxs.utils.EntityMapper;
......@@ -68,6 +70,8 @@ public class SupplierItemServiceImpl implements SupplierItemService {
@Autowired
AuctionRecordDao auctionRecordDao;
@Autowired
DistributionOrderService distributionOrderService;
@Override
public Result findList(SupplierItemRequestDto dto) {
......@@ -276,6 +280,7 @@ public class SupplierItemServiceImpl implements SupplierItemService {
public Result findAuctionDetail(SupplierItemRequestDto dto) {
try {
AuctionDetailVo auctionDetailVo = new AuctionDetailVo();
Date now = new Date();
long itemId = 0;
String shareRecordId = dto.getShareRecordId();
DistributorShareRecord distributorShareRecord = null;
......@@ -293,18 +298,30 @@ public class SupplierItemServiceImpl implements SupplierItemService {
}
//查询商品竞拍信息
AuctionConfig auctionConfig = auctionConfigDao.findByItemId(itemId);
//查询商品竞拍记录
AuctionRecordRequestDto auctionRecordRequestDto = new AuctionRecordRequestDto();
auctionRecordRequestDto.setItemId(itemId);
auctionRecordRequestDto.setPage(dto.getPage());
auctionRecordRequestDto.setLimit(dto.getLimit());
List<AuctionRecord> auctionRecordList = auctionRecordDao.findByPage(auctionRecordRequestDto);
AuctionRecord lastedRecord = auctionRecordDao.findLastedRecord(itemId);
//当前价
if (CollectionUtils.isEmpty(auctionRecordList)) {
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.PROCESS.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.PROCESS.getDes());
auctionDetailVo.setCurrentPrice(PriceUtil.convertPriceFenToYuan(auctionConfig.getStartPrice()));
} else {
AuctionRecord lastedRecord = auctionRecordDao.findLastedRecord(itemId);
auctionDetailVo.setCurrentPrice(PriceUtil.convertPriceFenToYuan(lastedRecord.getPrice()));
//如果最高价是自己出的,用户状态显示已领先
if (lastedRecord.getUserId().longValue() == dto.getUserId().longValue()) {
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.LEAD.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.LEAD.getDes());
} else {
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.PROCESS.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.PROCESS.getDes());
}
}
auctionDetailVo.setAuctionRecordList(auctionRecordList);
SupplierItem supplierItem = supplierItemDao.findById(itemId);
......@@ -323,13 +340,32 @@ public class SupplierItemServiceImpl implements SupplierItemService {
auctionDetailVo.setStartTime(startTime);
auctionDetailVo.setEndTime(auctionConfig.getEndTime());
auctionDetailVo.setRealEndTime(realEndTime);
Date now = new Date();
DistributionOrder distributionOrder = distributionOrderDao.findByItemId(itemId);
if (now.before(startTime)) {
auctionDetailVo.setState(DistributionEnum.AuctionStateEnum.NOT_START.getCode());
auctionDetailVo.setStateName(DistributionEnum.AuctionStateEnum.NOT_START.getDes());
} else if (now.after(realEndTime)) {
auctionDetailVo.setState(DistributionEnum.AuctionStateEnum.END.getCode());
auctionDetailVo.setStateName(DistributionEnum.AuctionStateEnum.END.getDes());
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.END.getDes());
//如果当前时间已经超过截拍时间,并且竞拍配置还未改成无效,则进行修改
if (auctionConfig.getIsValid()) {
auctionConfigDao.setEnd(itemId);
}
//如果是该用户竞拍成功,还没生成订单则用户状态为立即支付
if (lastedRecord.getUserId().longValue() == dto.getUserId().longValue()) {
//竞拍结束后未生成订单
if (distributionOrder == null || distributionOrder.getPayTime() == null) {
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.PRE_PAY.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.PRE_PAY.getDes());
} else {
//竞拍结束页生成了订单并支付过了就显示竞拍结束
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.END.getDes());
}
}
} else {
auctionDetailVo.setState(DistributionEnum.AuctionStateEnum.IN_AUCTION.getCode());
auctionDetailVo.setStateName(DistributionEnum.AuctionStateEnum.IN_AUCTION.getDes());
......@@ -339,6 +375,12 @@ public class SupplierItemServiceImpl implements SupplierItemService {
"奖励则归属于第一个分享给买家的分销商。" +
"(举例:某拍品最终成拍价是1000元,有4个分销商参与分销,则中拍买家的分销商分得30元佣金,其余3个分销商没人分得10元佣金)");
auctionDetailVo.setDescription(supplierItem.getDescription());
//是否延迟截拍的标识
if (!auctionConfig.getEndTime().equals(auctionConfig.getRealEndTime())) {
auctionDetailVo.setIsExtend(true);
} else {
auctionDetailVo.setIsExtend(false);
}
return Result.success(auctionDetailVo);
} catch (Exception e) {
logger.error("查询拍卖商品详情 error : {}", e);
......
......@@ -13,6 +13,14 @@ public interface DistributionOrderService {
Result createDistributionOrder(DistributionOrderRequestDto dto);
/**
* 创建拍卖分销单
* @param dto
* @return
*/
Result createAuctionOrder(DistributionOrderRequestDto dto);
/**
* 分销商购买样品
* @param dto
......
......@@ -45,6 +45,8 @@ public class AuctionRecordController {
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("itemId", "商品id").must().number()
.set("price", "出价").must().string()
.set("userId", "userId").must().number()
.set("shareRecordId", "分享id").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(validator.getErrorInfo());
......@@ -54,4 +56,5 @@ public class AuctionRecordController {
}
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