Commit 05cfcdff authored by shiyu's avatar shiyu

Merge branch 'quanku_v3.5' into quanku_v3.6

# Conflicts:
#	ch-wx-api/src/test/java/com/wwdz/ch/wx/api/WxPayServiceTest.java
parents 48739400 fb907615
......@@ -43,9 +43,9 @@ public class EarnestEnum {
public enum TypeEnum {
GIFT(1, "赠送保证金"),
PAY(2, "缴纳保证金"),
PAY(2, "充值保证金"),
WITHDRAW(3, "提取保证金"),
OCCUPY(4, "占用保证金"),
OCCUPY(4, "占用出价额度"),
RELEASE(5, "释放保证金"),
DEDUCT(-1, "扣除保证金"),
;
......@@ -83,7 +83,7 @@ public class EarnestEnum {
public enum StateEnum {
VALID(1, "初始有效状态"),
RELEASE(5, "已释放"),
DEDUCT(-1, "中拍超时未支付,已扣除"),
DEDUCT(-1, "中拍超时未支付,已扣除保证金"),
;
private int code;
......
......@@ -58,7 +58,12 @@ public class UserAccountVo implements Entity{
private String earnestAmount;
/**
* 保证金可用金额
* 总保证金金额(充值 + 赠送的)
*/
private String totalEarnestAmount;
/**
* 保证金可用金额(未被占用的(充值+赠送的金额))
*/
private String earnestUsableAmount;
......@@ -98,6 +103,7 @@ public class UserAccountVo implements Entity{
userAccountVo.setIntroduceWaitEntryAmount(PriceUtil.convertPriceFenToYuan(userAccount.getIntroduceWaitEntryAmount()));
userAccountVo.setTotalIntroduceAmount(PriceUtil.convertPriceFenToYuan(userAccount.getIntroduceAmount() + userAccount.getIntroduceWaitEntryAmount()));
userAccountVo.setEarnestAmount(PriceUtil.convertPriceFenToYuan(userAccount.getEarnestAmount()));
userAccountVo.setTotalEarnestAmount(PriceUtil.convertPriceFenToYuan(userAccount.getEarnestAmount() + userAccount.getGiftEarnestAmount()));
userAccountVo.setEarnestUsableAmount(PriceUtil.convertPriceFenToYuan(userAccount.getEarnestUsableAmount()));
userAccountVo.setGiftEarnestAmount(PriceUtil.convertPriceFenToYuan(userAccount.getGiftEarnestAmount()));
userAccountVo.setUsableOfferAmount(PriceUtil.convertPriceFenToYuan(userAccount.getEarnestUsableAmount() * CommConsts.EARNEST_TRANSFORM_AUCTION_REBATE));
......
......@@ -13,6 +13,8 @@ public interface SpecialPerformanceConfigDao {
SpecialPerformanceConfig findById(int specialPerformanceId, long itemId);
SpecialPerformanceConfig findByItemId(long itemId);
boolean insert(SpecialPerformanceConfig specialPerformanceConfig);
boolean update(SpecialPerformanceConfig specialPerformanceConfig);
......
......@@ -23,6 +23,15 @@ public interface EarnestRecordDao {
*/
boolean update(EarnestRecord earnestRecord);
/**
* 释放或扣除保证金
*
* @param dto
* @return
*/
boolean updateState(EarnestRecordRequestDto dto);
/**
* 查询保证金明细
* @param dto
......@@ -36,4 +45,12 @@ public interface EarnestRecordDao {
* @return
*/
long sumForOccupy(EarnestRecordRequestDto dto);
/**
* 检查是否存在被保证金记录
* 兼容之前没有保证金的逻辑
* @param dto
* @return
*/
boolean isExisted(EarnestRecordRequestDto dto);
}
......@@ -66,4 +66,10 @@ public class EarnestRecordRequestDto extends BaseRequestDto implements Entity {
* 状态
*/
private Integer state;
/**
* 要查询的状态
* 用于扣除保证金,指定状态的记录修改
*/
private Integer searchState;
}
......@@ -64,6 +64,15 @@ public class SpecialPerformanceConfigDaoImpl implements SpecialPerformanceConfig
return specialPerformanceConfigMapper.selectOneByExample(example);
}
@Override
public SpecialPerformanceConfig findByItemId(long itemId) {
SpecialPerformanceConfigExample example = new SpecialPerformanceConfigExample();
SpecialPerformanceConfigExample.Criteria criteria = example.createCriteria();
criteria.andItemIdEqualTo(itemId);
return specialPerformanceConfigMapper.selectOneByExample(example);
}
@Override
public boolean insert(SpecialPerformanceConfig specialPerformanceConfig) {
specialPerformanceConfig.setCreateTime(new Date());
......
......@@ -32,6 +32,20 @@ public class EarnestRecordDaoImpl implements EarnestRecordDao {
return earnestRecordMapper.updateByExampleSelective(earnestRecord, example) > 0;
}
@Override
public boolean updateState(EarnestRecordRequestDto dto) {
EarnestRecordExample example = new EarnestRecordExample();
EarnestRecordExample.Criteria criteria = example.createCriteria();
criteria.andUserIdEqualTo(dto.getUserId());
criteria.andItemIdEqualTo(dto.getItemId());
criteria.andTypeEqualTo(dto.getType());
criteria.andStateEqualTo(dto.getSearchState());
EarnestRecord earnestRecord = new EarnestRecord();
earnestRecord.setState(dto.getState());
return earnestRecordMapper.updateByExampleSelective(earnestRecord, example) > 0;
}
@Override
public List<EarnestRecord> findList(EarnestRecordRequestDto dto) {
EarnestRecordExample example = new EarnestRecordExample();
......@@ -54,4 +68,18 @@ public class EarnestRecordDaoImpl implements EarnestRecordDao {
JdbcHelper.ifPresent(dto.getState(), criteria :: andStateEqualTo);
return earnestRecordMapper.sumForOccupy(example);
}
@Override
public boolean isExisted(EarnestRecordRequestDto dto) {
EarnestRecordExample example = new EarnestRecordExample();
EarnestRecordExample.Criteria criteria = example.createCriteria();
JdbcHelper.ifPresent(dto.getUserId(), criteria :: andUserIdEqualTo);
JdbcHelper.ifPresent(dto.getItemId(), criteria :: andItemIdEqualTo);
JdbcHelper.ifPresent(dto.getType(), criteria :: andTypeEqualTo);
JdbcHelper.ifPresent(dto.getState(), criteria :: andStateEqualTo);
JdbcHelper.ifPresent(dto.getTypeList(), criteria :: andTypeIn);
JdbcHelper.ifPresent(dto.getFilterTypeList(), criteria :: andTypeNotIn);
return earnestRecordMapper.countByExample(example) > 0;
}
}
......@@ -48,6 +48,7 @@ import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
......@@ -151,6 +152,9 @@ public class WxPayCallbackController {
@Autowired
AuctionEarnestService auctionEarnestService;
@Autowired
EarnestRecordDao earnestRecordDao;
@RequestMapping(value ="/getPayNotify")
public String payNotify(HttpServletRequest request) throws IOException {
logger.info("------------------ 收到微信支付回调通知 ------------------");
......@@ -337,7 +341,7 @@ public class WxPayCallbackController {
}
@Transactional
public Result handleAuctionOrder(Transaction transaction) {
try {
//商户订单号,分销订单号
......@@ -689,6 +693,18 @@ public class WxPayCallbackController {
earnestOrder.setUpdateTime(new Date());
earnestOrderDao.update(earnestOrder);
//保存充值记录
EarnestRecord earnestRecord = new EarnestRecord();
earnestRecord.setUserId(userId);
earnestRecord.setAmount(amount);
earnestRecord.setEntryType(EarnestEnum.EntryEnum.INCREASE.getCode());
earnestRecord.setCreateTime(new Date());
earnestRecord.setUpdateTime(new Date());
earnestRecord.setType(EarnestEnum.TypeEnum.PAY.getCode());
earnestRecord.setState(EarnestEnum.StateEnum.VALID.getCode());
earnestRecordDao.insert(earnestRecord);
//用户账户,更新保证金额度
UserAccount userAccount = userAccountDao.findByUserId(userId);
long earnestUsableAmount = userAccount.getEarnestUsableAmount();
......
......@@ -163,4 +163,6 @@ public class AuctionDetailVo implements Entity {
*/
private Boolean isSubscribed;
private Integer lot;
}
......@@ -103,4 +103,9 @@ public class AuctionRecordVo implements Entity {
* 是否足够保证金
*/
private Boolean enoughEarnest = true;
/**
* 可出价额度
*/
private String usableOfferAmount;
}
......@@ -9,6 +9,7 @@ import com.wwdz.ch.db.dao.distribution.UserAccountDetailDao;
import com.wwdz.ch.db.dao.openShop.EarnestRecordDao;
import com.wwdz.ch.db.dao.openShop.UserAccountDao;
import com.wwdz.ch.db.domain.distribution.UserAccountDetail;
import com.wwdz.ch.db.domain.openShop.EarnestRecord;
import com.wwdz.ch.db.domain.openShop.UserAccount;
import com.wwdz.ch.db.dto.request.openShop.EarnestRecordRequestDto;
import com.wwdz.ch.wx.service.UserAccountService;
......@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
......@@ -40,6 +42,7 @@ public class UserAccountServiceImpl implements UserAccountService {
try {
UserAccount userAccount = userAccountDao.findByUserId(userId);
if (userAccount == null) {
Date now = new Date();
UserAccount newAccount = new UserAccount();
newAccount.setUserId(userId);
newAccount.setGuaranteeAmount(0L);
......@@ -49,10 +52,21 @@ public class UserAccountServiceImpl implements UserAccountService {
newAccount.setIntroduceWaitEntryAmount(0L);
newAccount.setEarnestAmount(0L);
newAccount.setGiftEarnestAmount(CommConsts.GIFT_EARNEST_AMOUNT);
newAccount.setEarnestUsableAmount(CommConsts.GIFT_EARNEST_AMOUNT * CommConsts.EARNEST_TRANSFORM_AUCTION_REBATE);
newAccount.setCreateTime(new Date());
newAccount.setUpdateTime(new Date());
newAccount.setEarnestUsableAmount(CommConsts.GIFT_EARNEST_AMOUNT);
newAccount.setCreateTime(now);
newAccount.setUpdateTime(now);
userAccountDao.insert(newAccount);
//新用户新增默认赠送的保证金额度
EarnestRecord earnestRecord = new EarnestRecord();
earnestRecord.setUserId(userId);
earnestRecord.setAmount(CommConsts.GIFT_EARNEST_AMOUNT);
earnestRecord.setEntryType(EarnestEnum.EntryEnum.INCREASE.getCode());
earnestRecord.setCreateTime(now);
earnestRecord.setUpdateTime(now);
earnestRecord.setType(EarnestEnum.TypeEnum.GIFT.getCode());
earnestRecord.setState(EarnestEnum.StateEnum.VALID.getCode());
earnestRecordDao.insert(earnestRecord);
}
return Result.success();
} catch (Exception e) {
......
......@@ -14,7 +14,9 @@ import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.db.dao.OfficialAccountSubscribeRecordDao;
import com.wwdz.ch.db.dao.UserDao;
import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.dao.openShop.UserAccountDao;
import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.domain.openShop.UserAccount;
import com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto;
import com.wwdz.ch.core.api.WxAppletApi;
import com.wwdz.ch.core.entity.AuctionOfferNoticeMsg;
......@@ -45,6 +47,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
......@@ -113,6 +116,9 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
@Autowired
AuctionEarnestService auctionEarnestService;
@Autowired
UserAccountDao userAccountDao;
@Value("${spring.profiles.active}")
private String env;
......@@ -140,6 +146,10 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
}
}
}
//反复出价不付款用户
if (368815L == dto.getUserId()) {
return Result.failed("被风控系统识别不能出价");
}
Date now = new Date();
//查询竞拍配置信息
AuctionConfig auctionConfig = auctionConfigDao.findByItemId(itemId);
......@@ -275,6 +285,7 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
@Override
public Result refreshOffer(AuctionRecordRequestDto dto) {
try {
userAccountService.initAccount(dto.getUserId());
AuctionRecordVo auctionRecordVo = new AuctionRecordVo();
AuctionRecordRequestDto searchDto = new AuctionRecordRequestDto();
searchDto.setItemId(dto.getItemId());
......@@ -331,7 +342,15 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
earnestRecordRequestDto.setUserId(dto.getUserId());
earnestRecordRequestDto.setAuctionPrice(PriceUtil.convertPriceFromStr(auctionRecordVo.getNextPrice()));
Result checkEnoughEarnestResult = auctionEarnestService.checkEnoughEarnest(earnestRecordRequestDto);
if (!checkEnoughEarnestResult.getSuccess()) {
long auctionPrice = PriceUtil.convertPriceFromStr(auctionRecordVo.getNextPrice());
//换算成对应需要占用的保证金
BigDecimal earnestAmount = new BigDecimal(String.valueOf(auctionPrice)).multiply(new BigDecimal(CommConsts.EARNEST_REBATE));
long occupyAmount = earnestAmount.longValue();
UserAccount userAccount = userAccountDao.findByUserId(dto.getUserId());
long earnestUsableAmount = userAccount.getEarnestUsableAmount();
//当前可出价的额度
auctionRecordVo.setUsableOfferAmount(PriceUtil.convertPriceFenToYuan(earnestUsableAmount * CommConsts.EARNEST_TRANSFORM_AUCTION_REBATE));
if (occupyAmount > earnestUsableAmount) {
auctionRecordVo.setEnoughEarnest(false);
}
auctionRecordVo.setStartPrice(PriceUtil.convertPriceFenToYuan(auctionConfig.getStartPrice()));
......
......@@ -24,6 +24,7 @@ import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.core.api.WxAppletApi;
import com.wwdz.ch.core.entity.AuctionOfferNoticeMsg;
import com.wwdz.ch.core.entity.SignedNoticeMsg;
import com.wwdz.ch.db.dto.request.openShop.EarnestRecordRequestDto;
import com.wwdz.ch.wx.entity.GroupPurchaseInfo;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderDetailVo;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderVo;
......@@ -33,6 +34,7 @@ import com.wwdz.ch.wx.service.distribution.DistributorProfitService;
import com.wwdz.ch.core.service.SendMsgService;
import com.wwdz.ch.wx.service.distribution.GroupPurchaseService;
import com.wwdz.ch.wx.service.distribution.IdentifyOrderService;
import com.wwdz.ch.wx.service.openShop.AuctionEarnestService;
import com.xxdxxs.utils.DateUtils;
import com.xxdxxs.utils.EntityMapper;
import org.redisson.api.RLock;
......@@ -143,6 +145,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired
ExchangeOrderSnapshotDao exchangeOrderSnapshotDao;
@Autowired
AuctionEarnestService auctionEarnestService;
@Transactional
@Override
......@@ -1362,6 +1366,21 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
long diffInHours = diffInMillies / (60 * 1000 * 60);
if (diffInHours >= 24) {
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
if (type == DistributionEnum.DistributionTypeEnum.AUCTION.getCode()) {
auctionConfigDao.updateState(distributionOrder.getItemId(), AuctionEnum.StateEnum.GET_NOT_PAY_TO_PASS.getCode());
logger.info("================== 拍品:{}, 超过付款时效, 自动取消订单 ==================", distributionOrder.getItemId());
//扣除用户保证金
EarnestRecordRequestDto deductEarnestDto = new EarnestRecordRequestDto();
deductEarnestDto.setUserId(distributionOrder.getBuyerId());
deductEarnestDto.setAuctionPrice(distributionOrder.getAmount());
deductEarnestDto.setItemId(distributionOrder.getItemId());
Result releaseEarnestResult = auctionEarnestService.deductEarnest(deductEarnestDto);
if (!releaseEarnestResult.getSuccess()) {
logger.error("================== 拍卖订单号:{},超时未支付扣除保证金失败 ==================", distributionOrder.getDistributionOrderId());
} else {
logger.info("================== 拍卖订单号:{}, 超时未支付扣除保证金成功 SUCCESS ==================", distributionOrder.getDistributionOrderId());
}
}
}
}
}
......@@ -1393,6 +1412,21 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
long diffInHours = diffInMillies / (60 * 1000 * 60);
if (diffInHours >= 24) {
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
if (type == DistributionEnum.DistributionTypeEnum.AUCTION.getCode()) {
auctionConfigDao.updateState(distributionOrder.getItemId(), AuctionEnum.StateEnum.GET_NOT_PAY_TO_PASS.getCode());
logger.info("================== 拍品:{}, 超过付款时效, 自动取消订单 ==================", distributionOrder.getItemId());
//扣除用户保证金
EarnestRecordRequestDto deductEarnestDto = new EarnestRecordRequestDto();
deductEarnestDto.setUserId(distributionOrder.getBuyerId());
deductEarnestDto.setAuctionPrice(distributionOrder.getAmount());
deductEarnestDto.setItemId(distributionOrder.getItemId());
Result releaseEarnestResult = auctionEarnestService.deductEarnest(deductEarnestDto);
if (!releaseEarnestResult.getSuccess()) {
logger.error("================== 拍卖订单号:{},超时未支付扣除保证金失败 ==================", distributionOrder.getDistributionOrderId());
} else {
logger.info("================== 拍卖订单号:{}, 超时未支付扣除保证金成功 SUCCESS ==================", distributionOrder.getDistributionOrderId());
}
}
}
}
});
......
......@@ -647,6 +647,7 @@ public class SupplierItemServiceImpl implements SupplierItemService {
auctionDetailVo.setSpecialPerformanceId(specialPerformanceConfig.getSpecialPerformanceId());
auctionDetailVo.setCurrentPrice(PriceUtil.convertPriceFenToYuan(specialPerformanceConfig.getCurrentPrice()));
auctionDetailVo.setIsSubscribed(disposableSubscribeRecordDao.isSubscribed(dto.getUserId(), itemId, DisposableSubscribeRecordEnum.TypeEnum.ITEM_PRE_END.getType()));
auctionDetailVo.setLot(specialPerformanceConfig.getLot());
//查询用户是否关注该商品
SpecialPerformanceItemFollowRequestDto specialPerformanceItemFollowRequestDto = new SpecialPerformanceItemFollowRequestDto();
specialPerformanceItemFollowRequestDto.setSpecialPerformanceId(specialPerformanceConfig.getSpecialPerformanceId());
......
......@@ -56,6 +56,9 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
@Autowired
UserAccountDao userAccountDao;
@Autowired
UserAccountService userAccountService;
......@@ -63,6 +66,7 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
@Override
public Result create(DistributionOrder distributionOrder, DistributorProfit distributorProfit) throws Exception {
try {
userAccountService.initAccount(distributionOrder.getSellerId());
//订单金额
long orderAmount = distributionOrder.getAmount();
//平台佣金
......@@ -111,6 +115,7 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
} else {
introduceAccountDetail.setUserId(distributionOrder.getIntroducerId() == null ? Long.valueOf(distributionOrder.getShareRecordId()) : distributionOrder.getIntroducerId());
//更新介绍人账户,增加待入账介绍佣金
userAccountService.initAccount(introduceAccountDetail.getUserId());
UserAccount oldIntroducerAccount = userAccountDao.findByUserId(introduceAccountDetail.getUserId());
UserAccount newIntroducerAccount = new UserAccount();
newIntroducerAccount.setUserId(introduceAccountDetail.getUserId());
......@@ -148,7 +153,7 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
return Result.success();
} catch (Exception e) {
logger.error("新增用户账户明细error:{}", e);
throw new Exception(e);
throw new Exception();
}
}
......
package com.wwdz.ch.wx.impl.openShop;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.EarnestEnum;
import com.wwdz.ch.core.entity.openShop.EarnestRecordVo;
import com.wwdz.ch.core.type.PageSearchResult;
......@@ -20,6 +21,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
@Service
......@@ -40,7 +43,8 @@ public class EarnestRecordServiceImpl implements EarnestRecordService {
public Result findList(EarnestRecordRequestDto dto) {
try {
List<EarnestRecordVo> earnestRecordVos = new ArrayList<>();
dto.setTypeList(Arrays.asList(EarnestEnum.TypeEnum.PAY.getCode(), EarnestEnum.TypeEnum.DEDUCT.getCode(), EarnestEnum.TypeEnum.WITHDRAW.getCode()));
dto.setTypeList(Arrays.asList(EarnestEnum.TypeEnum.PAY.getCode(), EarnestEnum.TypeEnum.DEDUCT.getCode(),
EarnestEnum.TypeEnum.WITHDRAW.getCode(), EarnestEnum.TypeEnum.GIFT.getCode()));
List<EarnestRecord> earnestRecordList = earnestRecordDao.findList(dto);
PageInfo pageInfo = new PageInfo<>(earnestRecordList);
for (EarnestRecord earnestRecord : earnestRecordList) {
......@@ -73,9 +77,13 @@ public class EarnestRecordServiceImpl implements EarnestRecordService {
EarnestRecordVo earnestRecordVo = new EarnestRecordVo();
EntityMapper.copyAttribute(earnestRecord, earnestRecordVo);
earnestRecordVo.setTypeName(EarnestEnum.TypeEnum.getNameByCode(earnestRecord.getType()));
earnestRecordVo.setAmount(PriceUtil.convertPriceFenToYuan(earnestRecord.getAmount()));
//占用的额度
earnestRecordVo.setAmount(PriceUtil.convertPriceFenToYuan(earnestRecord.getAmount() * CommConsts.EARNEST_TRANSFORM_AUCTION_REBATE));
if (earnestRecord.getState() != EarnestEnum.StateEnum.VALID.getCode()) {
earnestRecordVo.setStateName(EarnestEnum.StateEnum.getNameByCode(earnestRecord.getState()));
if (earnestRecord.getState() == EarnestEnum.StateEnum.DEDUCT.getCode()) {
earnestRecordVo.setStateName(EarnestEnum.StateEnum.getNameByCode(earnestRecord.getState()) + "¥" + PriceUtil.convertPriceFenToYuan(earnestRecord.getAmount()));
}
}
SupplierItem supplierItem = supplierItemDao.findById(earnestRecord.getItemId());
earnestRecordVo.setItemName(supplierItem.getName());
......@@ -105,7 +113,7 @@ public class EarnestRecordServiceImpl implements EarnestRecordService {
map.put("usedPayAmount", "0");
} else {
map.put("usedGiftAmount", PriceUtil.convertPriceFenToYuan(giftAmount));
map.put("usedPayAmount", PriceUtil.convertPriceFenToYuan(earnestAmount - giftAmount));
map.put("usedPayAmount", PriceUtil.convertPriceFenToYuan(occupyAmount - giftAmount));
}
return Result.success(map);
} catch (Exception e) {
......
......@@ -27,6 +27,7 @@ import com.wwdz.ch.db.dto.request.openShop.GuaranteeMoneyRecordRequestDto;
import com.wwdz.ch.db.dto.request.openShop.OpenShopApplyOrderRequestDto;
import com.wwdz.ch.db.dto.request.openShop.OpenShopInfoRequestDto;
import com.wwdz.ch.wx.impl.AiAssistantServiceImpl;
import com.wwdz.ch.wx.service.UserAccountService;
import com.wwdz.ch.wx.service.openShop.OpenShopService;
import com.xxdxxs.utils.EntityMapper;
import org.slf4j.Logger;
......@@ -44,7 +45,7 @@ import java.util.Map;
@Service
public class OpenShopServiceImpl implements OpenShopService {
private static final Logger logger = LoggerFactory.getLogger(AiAssistantServiceImpl.class);
private static final Logger logger = LoggerFactory.getLogger(OpenShopServiceImpl.class);
@Autowired
OpenShopApplyOrderDao openShopApplyOrderDao;
......@@ -73,11 +74,15 @@ public class OpenShopServiceImpl implements OpenShopService {
@Autowired
OpenShopCostConfigDao openShopCostConfigDao;
@Autowired
UserAccountService userAccountService;
@Override
public Result checkAbleToOpenShop(OpenShopInfoRequestDto dto) {
try {
Map<String, Object> map = new HashMap<>();
long userId = dto.getUserId();
userAccountService.initAccount(userId);
Map<String, Object> map = new HashMap<>();
//查询是否粉丝数超过了100
long fansNum = followFansRecordDao.countFans(userId);
map.put("fansNum", fansNum);
......
......@@ -241,11 +241,14 @@ public class AutoSendMsgJob {
/**
* 拍卖订单中拍超时未付款导致流拍
* 自动更新这些拍品的状态为"中拍未付款流拍"
* 每次检测100条
*/
public void autoCancelNotPayOrder() {
logger.info("********************* 自动更新超时未支付拍卖订单状态 *********************");
DistributionOrderRequestDto dto = new DistributionOrderRequestDto();
dto.setType(DistributionEnum.DistributionTypeEnum.AUCTION.getCode());
dto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode());
dto.setLimit(100);
List<DistributionOrder> prePayList = distributionOrderDao.findByPage(dto);
prePayList.forEach(distributionOrder -> {
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
......@@ -255,7 +258,6 @@ public class AutoSendMsgJob {
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
auctionConfigDao.updateState(distributionOrder.getItemId(), AuctionEnum.StateEnum.GET_NOT_PAY_TO_PASS.getCode());
logger.info("================== 拍品:{}, 超过付款时效, 自动取消订单 ==================", distributionOrder.getItemId());
//扣除用户保证金
EarnestRecordRequestDto deductEarnestDto = new EarnestRecordRequestDto();
deductEarnestDto.setUserId(distributionOrder.getBuyerId());
......
package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
public interface UserAccountService {
......
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