package com.nuvole.four.service.impl;
|
|
import com.nuvole.base.domain.SysUser;
|
import com.nuvole.four.client.ShopServiceClient;
|
import com.nuvole.four.contants.Contants;
|
import com.nuvole.four.domain.ActivityShopRecord;
|
import com.nuvole.four.domain.dto.ActivityShopRecordDto;
|
import com.nuvole.four.domain.params.ActivityShopRecordParam;
|
import com.nuvole.four.domain.query.ActivityShopRecordQuery;
|
import com.nuvole.four.mapper.ActivityFeeMapper;
|
import com.nuvole.four.mapper.ActivityShopRecordMapper;
|
import com.nuvole.four.service.ActivityShopRecordService;
|
import com.nuvole.four.util.SystemUtil;
|
import com.nuvole.util.IdGenerator;
|
import com.walker.infrastructure.utils.CollectionUtils;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Description 活动补贴—上报商户Service实现类
|
* @Author dqh
|
* @Date 2024-04-13 21:39:14
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class ActivityShopRecordServiceImpl implements ActivityShopRecordService {
|
|
private final ActivityShopRecordMapper activityShopRecordMapper;
|
private final ShopServiceClient shopServiceClient;
|
private final ActivityFeeMapper activityFeeMapper;
|
|
|
|
@Override
|
public int addSelective(ActivityShopRecord entity) {
|
return activityShopRecordMapper.insertSelective(entity);
|
}
|
|
@Override
|
public int editSelective(ActivityShopRecord entity) {
|
return activityShopRecordMapper.updateByPrimaryKeySelective(entity);
|
}
|
|
@Override
|
public ActivityShopRecord get(Long id) {
|
return activityShopRecordMapper.selectByPrimaryKey(id);
|
}
|
|
@Override
|
public int del(Long id) {
|
return activityShopRecordMapper.deleteByPrimaryKey(id);
|
}
|
|
|
@Override
|
public List<ActivityShopRecord> getList(ActivityShopRecordQuery query) {
|
return activityShopRecordMapper.selectList(query);
|
}
|
|
@Override
|
public Map getActRateByShopIdAndChannelId(Long shopId, Long channelId) {
|
return activityShopRecordMapper.getActRateByShopId(shopId, channelId);
|
}
|
|
@Override
|
public int updShopSurplusFee(Long activityId, Long merchantShopId, Long channelId, Integer useFee) {
|
return activityShopRecordMapper.updShopSurplusFee(activityId, merchantShopId, channelId, useFee);
|
}
|
|
/**
|
* 方法描述:查询已上报商户列表
|
*
|
* @date 2024-04-14 21:08
|
**/
|
@Override
|
public List<ActivityShopRecordDto> getAlreadyMerchantList(ActivityShopRecordParam param) {
|
//已上报的商户列表
|
List<ActivityShopRecordDto> dtoList = activityShopRecordMapper.getAlreadyMerchantList(param);
|
if(CollectionUtils.isEmpty(dtoList)){
|
return dtoList;
|
}
|
//关联shop库查询商户、店铺等字段信息
|
List<Long> shopIds = dtoList.stream().map(ActivityShopRecord::getMerchantShopId).collect(Collectors.toList());
|
String ids = shopIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
List<Map> mapList = shopServiceClient.selectShopMsgByIds(ids);
|
if(!CollectionUtils.isEmpty(mapList)){
|
// 将 mapList 中的数据合并到 dtoList 中
|
dtoList.forEach( d -> {
|
ActivityShopRecordDto dto = d;
|
Map<String, Object> map = mapList.get(dtoList.indexOf(d));
|
// 合并
|
mergeMapToDto(dto, map);
|
});
|
}
|
return dtoList;
|
}
|
|
/**
|
* 方法描述:批量添加上报
|
*
|
* @date 2024-04-15 9:46
|
**/
|
@Override
|
public Integer batchInsert(List<ActivityShopRecord> recordList) {
|
if(CollectionUtils.isEmpty(recordList)){
|
return 0;
|
}
|
SysUser user = SystemUtil.getLoginUser(Contants.LOGIN_TYPE_PC);
|
Long totalFee = activityFeeMapper.selectByPrimaryKey(recordList.get(0).getActivityId()).getTotalFee();
|
recordList.forEach( r -> {
|
if (r.getId() == null) {
|
//新增自动生成id
|
r.setId(IdGenerator.getId());
|
r.setCreateBy(user.getId());
|
r.setCreateTime(new Date());
|
//上报时只存活动的总额度;待触发活动开始,才开始分配额度
|
r.setTotalFee(totalFee);
|
r.setUseFee(0L);
|
r.setSurplusFee(totalFee);
|
//默认状态均=0(未开始)
|
r.setStatus(0);
|
r.setDeleted(0);
|
}else{
|
//额度自动分配,不允许更新操作;
|
String errMsg = String.format("第 {%s} 条不允许重复上报", recordList.indexOf(r) + 1);
|
throw new IllegalArgumentException(errMsg);
|
}
|
});
|
return activityShopRecordMapper.batchInsert(recordList);
|
}
|
|
/**
|
* 方法描述:根据shopIds查询所有记录
|
*
|
* @date 2024-04-15 11:23
|
**/
|
@Override
|
public List<ActivityShopRecord> selectByCondition(String[] ids,Long activityId) {
|
return activityShopRecordMapper.selectByCondition(ids,activityId);
|
}
|
|
/**
|
* 方法描述: 将 mapList 中的数据合并到 dtoList 中
|
*
|
* @date 2024-04-14 22:56
|
**/
|
private void mergeMapToDto(ActivityShopRecordDto dto, Map<String, Object> map) {
|
dto.setManagerName((String)map.get("managerName"));
|
dto.setShopCode((String)map.get("shopCode"));
|
dto.setShopName((String)map.get("shopName"));
|
dto.setShopId((String)map.get("id"));
|
dto.setMerchantName((String) map.get("merchantName"));
|
dto.setContactName((String) map.get("contactName"));
|
dto.setContactMobile((String) map.get("contactMobile"));
|
dto.setOfflineWxRate((Double) map.get("wxRate"));
|
dto.setOfflineZfbRate((Double) map.get("zfbRate"));
|
dto.setOfflineUnionpayRate((Double) map.get("unionpayRate"));
|
|
}
|
|
|
}
|