package com.taoke.autopay.manager;
|
|
import com.taoke.autopay.entity.OrderChannelEnum;
|
import com.taoke.autopay.entity.agent.ChannelAgent;
|
import com.taoke.autopay.entity.agent.ChannelAgentSettings;
|
import com.taoke.autopay.entity.agent.ChannelAgentSharingRatio;
|
import com.taoke.autopay.exception.ChannelAgentException;
|
import com.taoke.autopay.service.agent.ChannelAgentService;
|
import com.taoke.autopay.service.agent.ChannelAgentSettingService;
|
import com.taoke.autopay.service.agent.ChannelAgentSharingRatioService;
|
import com.taoke.autopay.vo.admin.AdminChannelAgentVO;
|
import net.sf.json.JSONObject;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.yeshi.utils.StringUtil;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
|
/**
|
* @author hxh
|
* @title: ChannelAgentManager
|
* @description: TODO
|
* @date 2024/8/4 1:34
|
*/
|
@Component
|
public class ChannelAgentManager {
|
|
@Resource
|
private ChannelAgentService channelAgentService;
|
|
@Resource
|
private ChannelAgentSettingService channelAgentSettingService;
|
|
@Resource
|
private ChannelAgentSharingRatioService channelAgentSharingRatioService;
|
|
|
@Transactional(rollbackFor = Exception.class)
|
public ChannelAgent addAgent(AdminChannelAgentVO vo) throws ChannelAgentException {
|
// 创建代理
|
ChannelAgent agent = ChannelAgent.builder()
|
.name(vo.getName())
|
.account(vo.getAccount())
|
.pwd(StringUtil.Md5(vo.getPwd()))
|
.alipayAccount(StringUtil.isNullOrEmpty(vo.getAlipayAccount()) ? null : vo.getAlipayAccount())
|
.alipayName(StringUtil.isNullOrEmpty(vo.getAlipayName()) ? null : vo.getAlipayName())
|
.status(ChannelAgent.STATUS_NOMAL)
|
.build();
|
|
agent = channelAgentService.addChannelAgent(agent);
|
// 添加设置
|
ChannelAgentSettings settings = ChannelAgentSettings.builder()
|
.id(agent.getId())
|
.startSubmitTime(StringUtil.isNullOrEmpty(vo.getStartSubmitTime()) ? null : vo.getStartSubmitTime())
|
.endSubmitTime(StringUtil.isNullOrEmpty(vo.getEndSubmitTime()) ? null : vo.getEndSubmitTime())
|
.maxKeyCountPerDay(StringUtil.isNullOrEmpty(vo.getMaxKeyCountPerDay()) ? null : Long.parseLong(vo.getMaxKeyCountPerDay()))
|
.maxPayMoneyPerDay(StringUtil.isNullOrEmpty(vo.getMaxPayMoneyPerDay()) ? null : new BigDecimal(vo.getMaxPayMoneyPerDay()))
|
.build();
|
channelAgentSettingService.add(settings);
|
// 添加分成比例设置
|
if (!StringUtil.isNullOrEmpty(vo.getShareRatioInfos())) {
|
JSONObject shareRatioData = JSONObject.fromObject(vo.getShareRatioInfos());
|
for (Object key : shareRatioData.keySet()) {
|
String value = shareRatioData.optString(key.toString());
|
OrderChannelEnum channel = OrderChannelEnum.valueOf(key.toString());
|
if (!StringUtil.isNullOrEmpty(value)) {
|
channelAgentSharingRatioService.setShareRatio(ChannelAgentSharingRatio.builder().agengId(agent.getId()).orderChannel(channel).shareType(ChannelAgentSharingRatio.SHARE_TYPE_MONEY).shareValue(new BigDecimal(value)).build());
|
}
|
}
|
}
|
return agent;
|
|
}
|
}
|