package com.nova.sankuai.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.nova.sankuai.domain.dto.LoanMarketConfigDto;
|
import com.nova.sankuai.domain.dto.LoanSupermarketPageDto;
|
import com.nova.sankuai.domain.dto.LoanSupermarketVisitDto;
|
import com.nova.sankuai.domain.entity.ChannelInfo;
|
import com.nova.sankuai.domain.entity.Customer;
|
import com.nova.sankuai.domain.entity.CustomerUser;
|
import com.nova.sankuai.domain.entity.LoanSupermarket;
|
import com.nova.sankuai.domain.vo.LoanMarketHotLinkVo;
|
import com.nova.sankuai.domain.vo.LoanSupermarketVo;
|
import com.nova.sankuai.infra.config.CommonException;
|
import com.nova.sankuai.infra.mapper.ChannelInfoMapper;
|
import com.nova.sankuai.infra.mapper.CustomerMapper;
|
import com.nova.sankuai.infra.mapper.CustomerUserMapper;
|
import com.nova.sankuai.infra.mapper.LoanSupermarketMapper;
|
import com.nova.sankuai.infra.utils.PageRequest;
|
import com.nova.sankuai.infra.utils.PageUtil;
|
import com.nova.sankuai.security.UserDetail;
|
import com.nova.sankuai.service.*;
|
import lombok.AllArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* @author weikangdi
|
*/
|
@Service
|
@AllArgsConstructor
|
public class LoanSupermarketServiceImpl extends ServiceImpl<LoanSupermarketMapper, LoanSupermarket> implements ILoanSupermarketService {
|
|
private final LoanSupermarketMapper supermarketMapper;
|
|
private final PageUtil pageUtil;
|
|
private final IChannelLogService channelLogService;
|
|
private final IChannelSupermarketService channelSupermarketService;
|
|
private final IH5ChannelLoanMarketService h5ChannelLoanMarketService;
|
|
private final ChannelInfoMapper channelInfoMapper;
|
|
private final CustomerMapper customerMapper;
|
|
private final CustomerUserMapper customerUserMapper;
|
|
private final IChannelInfoService channelInfoService;
|
|
|
@Override
|
public IPage<LoanSupermarketVo> pageModel(PageRequest pageRequest, LoanSupermarketPageDto pageDto) {
|
IPage<LoanSupermarketVo> page = supermarketMapper.pageModel(pageUtil.getPage(pageRequest), pageDto);
|
return page;
|
}
|
|
@Override
|
public void addVisitRecord(LoanSupermarketVisitDto visitDto) {
|
channelLogService.createSupermarketLog(visitDto.getId(), visitDto.getSource(), visitDto.getCustomerId());
|
}
|
|
@Override
|
public List<LoanSupermarket> getSupermarketList() {
|
List<LoanSupermarket> result = supermarketMapper.getSupermarketList();
|
return result;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void addLoanSupermarket(LoanSupermarket supermarket) {
|
supermarket.setCreationDate(new Date());
|
save(supermarket);
|
channelSupermarketService.saveBySupermarket(supermarket);
|
h5ChannelLoanMarketService.saveBySupermarket(supermarket);
|
}
|
|
|
@Override
|
public void edit(LoanSupermarket supermarket) {
|
LoanSupermarket loanSupermarketDb = getById(supermarket.getId());
|
if (loanSupermarketDb == null) {
|
throw new CommonException("该贷款超市不存在");
|
}
|
loanSupermarketDb.setName(supermarket.getName());
|
loanSupermarketDb.setScopeStart(supermarket.getScopeStart());
|
loanSupermarketDb.setScopeEnd(supermarket.getScopeEnd());
|
loanSupermarketDb.setMonthlyInterestRate(supermarket.getMonthlyInterestRate());
|
loanSupermarketDb.setDateStart(supermarket.getDateStart());
|
loanSupermarketDb.setDateEnd(supermarket.getDateEnd());
|
loanSupermarketDb.setHotFlag(supermarket.getHotFlag());
|
loanSupermarketDb.setImageUrl(supermarket.getImageUrl());
|
loanSupermarketDb.setLinkUrl(supermarket.getLinkUrl());
|
loanSupermarketDb.setDescription(supermarket.getDescription());
|
loanSupermarketDb.setSerialNumber(supermarket.getSerialNumber());
|
updateById(loanSupermarketDb);
|
}
|
|
@Override
|
public void editChannelConfig(LoanMarketConfigDto configDto) {
|
LoanSupermarket loanSupermarketDb = getById(configDto.getId());
|
if (loanSupermarketDb == null) {
|
throw new CommonException("该贷款超市不存在");
|
}
|
BeanUtils.copyProperties(configDto, loanSupermarketDb);
|
updateById(loanSupermarketDb);
|
channelSupermarketService.editByLoanMarket(loanSupermarketDb);
|
h5ChannelLoanMarketService.editByLoanMarket(loanSupermarketDb);
|
}
|
|
@Override
|
public List<LoanMarketHotLinkVo> getLoanMarketHotLinkList() {
|
List<LoanMarketHotLinkVo> result = supermarketMapper.getLoanMarketHotLinkList();
|
return result;
|
}
|
|
@Override
|
public boolean checkLoanMarketHotLinkRely(Long loanMarketId) {
|
LoanSupermarket supermarket = getById(loanMarketId);
|
if (supermarket == null) {
|
throw new CommonException("该贷款超市不存在");
|
}
|
Integer count = channelInfoMapper.checkLoanMarketHotLinkRely(loanMarketId);
|
if (count > 0) {
|
return true;
|
}
|
return false;
|
}
|
|
@Override
|
public void delete(Long id) {
|
LoanSupermarket loanSupermarket = getById(id);
|
if (loanSupermarket == null) {
|
throw new CommonException("该贷款超市不存在");
|
}
|
removeById(id);
|
channelInfoMapper.update(null, Wrappers.<ChannelInfo>lambdaUpdate()
|
.set(ChannelInfo::getLoanMarketHotLinkSwitch, 0)
|
.set(ChannelInfo::getLoanMarketHotLinkId, null)
|
.eq(ChannelInfo::getLoanMarketHotLinkId, loanSupermarket.getId()));
|
}
|
|
@Override
|
public List<LoanSupermarket> getSecondSupermarket() {
|
List<LoanSupermarket> loanSupermarketList = list(new LambdaQueryWrapper<LoanSupermarket>()
|
.eq(LoanSupermarket::getDeleteFlag, 0)
|
.eq(LoanSupermarket::getEnableFlag, 1)
|
.orderByAsc(LoanSupermarket::getSerialNumber));
|
List<LoanSupermarket> loanSupermarkets = new ArrayList<>();
|
if (loanSupermarketList != null && !loanSupermarketList.isEmpty()) {
|
if (loanSupermarketList.size() > 2) {
|
loanSupermarkets.add(loanSupermarketList.get(1));
|
} else {
|
loanSupermarkets.add(loanSupermarketList.get(0));
|
}
|
} else {
|
loanSupermarkets.add(new LoanSupermarket());
|
}
|
return loanSupermarkets;
|
}
|
|
@Override
|
public List<LoanSupermarket> getVipMode() {
|
return list(new LambdaQueryWrapper<LoanSupermarket>()
|
.eq(LoanSupermarket::getDeleteFlag, 0)
|
.eq(LoanSupermarket::getEnableFlag, 1)
|
.eq(LoanSupermarket::getIsOpenVipMode, 1)
|
.orderByAsc(LoanSupermarket::getSerialNumber));
|
}
|
|
@Override
|
public List<LoanSupermarketVo> getMyMoney(UserDetail userDetail) {
|
Customer customer = customerMapper.getLatestCustomerRecord(userDetail.getPhone());
|
CustomerUser user = customerUserMapper.selectOne(Wrappers.lambdaQuery(CustomerUser.class).eq(CustomerUser::getPhone, userDetail.getPhone()));
|
ChannelInfo channelInfo = channelInfoService.lambdaQuery().eq(ChannelInfo::getCode, user.getSourceChannel()).eq(ChannelInfo::getType, ChannelInfo.TYPE_IMPORT).one();
|
return baseMapper.findMyMoney(channelInfo.getId());
|
}
|
|
@Override
|
public LoanSupermarketVo getWaitApproval(UserDetail userDetail) {
|
LoanSupermarket supermarket = lambdaQuery().eq(LoanSupermarket::getWaitApproval, 1).orderByDesc(LoanSupermarket::getSerialNumber).last("LIMIT 1").one();
|
if (Objects.nonNull(supermarket)) {
|
LoanSupermarketVo vo = new LoanSupermarketVo();
|
BeanUtils.copyProperties(supermarket, vo);
|
return vo;
|
}
|
return null;
|
}
|
}
|