|  | @@ -1,29 +1,73 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +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 com.ym.mec.biz.dal.dao.MemberRankPrivilegesDao;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.MemberRankSettingDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.MemberFeeSetting;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.MemberRankPrivileges;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.MemberRankSetting;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.Student;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.DealStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.GroupType;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.PeriodEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.ContractService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.MemberFeeSettingService;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.MemberRankSettingService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.StudentPaymentOrderService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.StudentService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysUserCashAccountService;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.service.impl.BaseServiceImpl;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | -import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  | -import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | +import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  | -public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, MemberRankSetting>  implements MemberRankSettingService {
 | 
	
		
			
				|  |  | +public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, MemberRankSetting> implements MemberRankSettingService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  |  	private MemberRankSettingDao memberRankSettingDao;
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  |  	private MemberRankPrivilegesDao memberRankPrivilegesDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private MemberFeeSettingService memberFeeSettingService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private StudentService studentService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private StudentPaymentOrderService studentPaymentOrderService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private SysUserCashAccountService sysUserCashAccountService;
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ContractService contractService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private final Logger logger = LoggerFactory.getLogger(this.getClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public BaseDAO<Integer, MemberRankSetting> getDAO() {
 | 
	
		
			
				|  |  |  		return memberRankSettingDao;
 | 
	
	
		
			
				|  | @@ -34,22 +78,22 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 | 
	
		
			
				|  |  |  	public void add(MemberRankSetting memberRankSetting) {
 | 
	
		
			
				|  |  |  		memberRankSettingDao.insert(memberRankSetting);
 | 
	
		
			
				|  |  |  		List<Integer> memberPrivilegesItemIdList = memberRankSetting.getMemberPrivilegesItemIdList();
 | 
	
		
			
				|  |  | -		if(memberPrivilegesItemIdList == null || memberPrivilegesItemIdList.size() == 0){
 | 
	
		
			
				|  |  | +		if (memberPrivilegesItemIdList == null || memberPrivilegesItemIdList.size() == 0) {
 | 
	
		
			
				|  |  |  			throw new BizException("操作失败:请配置会员权益");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		memberRankPrivilegesDao.batchInsert(memberRankSetting.getId(),memberPrivilegesItemIdList);
 | 
	
		
			
				|  |  | +		memberRankPrivilegesDao.batchInsert(memberRankSetting.getId(), memberPrivilegesItemIdList);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public MemberRankSetting getDetail(Integer memberRankSettingId) {
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public MemberRankSetting getDetail(Integer memberRankSettingId) {
 | 
	
		
			
				|  |  |  		MemberRankSetting memberRankSetting = memberRankSettingDao.get(memberRankSettingId);
 | 
	
		
			
				|  |  |  		List<MemberRankPrivileges> byRankSettingId = memberRankPrivilegesDao.findByRankSettingId(memberRankSettingId);
 | 
	
		
			
				|  |  | -		if(byRankSettingId != null && byRankSettingId.size() > 0){
 | 
	
		
			
				|  |  | +		if (byRankSettingId != null && byRankSettingId.size() > 0) {
 | 
	
		
			
				|  |  |  			memberRankSetting.setMemberRankPrivileges(byRankSettingId);
 | 
	
		
			
				|  |  | -			memberRankSetting.setMemberPrivilegesItemIdList(byRankSettingId.stream().map(e->e.getMemberPrivilegesId()).collect(Collectors.toList()));
 | 
	
		
			
				|  |  | +			memberRankSetting.setMemberPrivilegesItemIdList(byRankSettingId.stream().map(e -> e.getMemberPrivilegesId()).collect(Collectors.toList()));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		return memberRankSetting;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
	
		
			
				|  | @@ -57,8 +101,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 | 
	
		
			
				|  |  |  		memberRankSettingDao.update(memberRankSetting);
 | 
	
		
			
				|  |  |  		memberRankPrivilegesDao.deleteByRankSettingId(memberRankSetting.getId());
 | 
	
		
			
				|  |  |  		List<Integer> memberPrivilegesItemIdList = memberRankSetting.getMemberPrivilegesItemIdList();
 | 
	
		
			
				|  |  | -		if(memberPrivilegesItemIdList != null && memberPrivilegesItemIdList.size() > 0){
 | 
	
		
			
				|  |  | -			memberRankPrivilegesDao.batchInsert(memberRankSetting.getId(),memberPrivilegesItemIdList);
 | 
	
		
			
				|  |  | +		if (memberPrivilegesItemIdList != null && memberPrivilegesItemIdList.size() > 0) {
 | 
	
		
			
				|  |  | +			memberRankPrivilegesDao.batchInsert(memberRankSetting.getId(), memberPrivilegesItemIdList);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -66,4 +110,160 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 | 
	
		
			
				|  |  |  	public List<MemberRankSetting> queryListByIsDefault(Boolean isDefault) {
 | 
	
		
			
				|  |  |  		return memberRankSettingDao.queryListByIsDefault(isDefault);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public Map buy(Integer userId, Integer memberRankId, PeriodEnum periodEnum, BigDecimal amount, boolean isUseBalance) throws Exception {
 | 
	
		
			
				|  |  | +		Student student = studentService.get(userId);
 | 
	
		
			
				|  |  | +		if (student == null) {
 | 
	
		
			
				|  |  | +			throw new BizException("非法访问");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		Integer organId = student.getOrganId();
 | 
	
		
			
				|  |  | +		if (organId == null) {
 | 
	
		
			
				|  |  | +			throw new BizException("学生没有分部编号");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		MemberFeeSetting memberFeeSetting = memberFeeSettingService.findByRankIdAndOrganId(organId, memberRankId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if (memberFeeSetting == null) {
 | 
	
		
			
				|  |  | +			throw new BizException("分部会员价格出现异常");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		BigDecimal actualAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		switch (periodEnum) {
 | 
	
		
			
				|  |  | +		case DAY:
 | 
	
		
			
				|  |  | +			actualAmount = memberFeeSetting.getCurrentDayFee();
 | 
	
		
			
				|  |  | +			break;
 | 
	
		
			
				|  |  | +		case MONTH:
 | 
	
		
			
				|  |  | +			actualAmount = memberFeeSetting.getCurrentMonthFee();
 | 
	
		
			
				|  |  | +			break;
 | 
	
		
			
				|  |  | +		case YEAR_HALF:
 | 
	
		
			
				|  |  | +			actualAmount = memberFeeSetting.getCurrentHalfYearFee();
 | 
	
		
			
				|  |  | +			break;
 | 
	
		
			
				|  |  | +		case YEAR:
 | 
	
		
			
				|  |  | +			actualAmount = memberFeeSetting.getCurrentYearFee();
 | 
	
		
			
				|  |  | +			break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		default:
 | 
	
		
			
				|  |  | +			break;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// 判断金额是否正确
 | 
	
		
			
				|  |  | +		if (actualAmount.compareTo(amount) != 0) {
 | 
	
		
			
				|  |  | +			throw new BizException("非法请求");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		Date date = new Date();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setUserId(userId);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setOrganId(organId);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setRoutingOrganId(organId);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setCreateTime(date);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setUpdateTime(date);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setExpectAmount(amount);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setActualAmount(amount);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setBalancePaymentAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setStatus(DealStatusEnum.ING);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setVersion(0);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setType(OrderTypeEnum.MEMBER);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setGroupType(GroupType.MEMBER);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setRemitFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setMemo("会员购买");
 | 
	
		
			
				|  |  | +		studentPaymentOrder.setPaymentChannel("BALANCE");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if (isUseBalance) {
 | 
	
		
			
				|  |  | +			SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
 | 
	
		
			
				|  |  | +			if (userCashAccount == null) {
 | 
	
		
			
				|  |  | +				throw new BizException("用户账户找不到");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			studentPaymentOrder.setPaymentChannel("BALANCE");
 | 
	
		
			
				|  |  | +			if (userCashAccount.getBalance().subtract(amount).doubleValue() >= 0) {
 | 
	
		
			
				|  |  | +				studentPaymentOrder.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +				studentPaymentOrder.setBalancePaymentAmount(amount);
 | 
	
		
			
				|  |  | +				studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | +				sysUserCashAccountService.updateBalance(userId, amount.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "购买会员");
 | 
	
		
			
				|  |  | +			} else {
 | 
	
		
			
				|  |  | +				if (userCashAccount.getBalance().doubleValue() > 0) {
 | 
	
		
			
				|  |  | +					sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团续费");
 | 
	
		
			
				|  |  | +					studentPaymentOrder.setBalancePaymentAmount(userCashAccount.getBalance());
 | 
	
		
			
				|  |  | +					studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().subtract(userCashAccount.getBalance()));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
 | 
	
		
			
				|  |  | +		Date nowDate = new Date();
 | 
	
		
			
				|  |  | +        //更新订单信息
 | 
	
		
			
				|  |  | +        studentPaymentOrder.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | +        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
 | 
	
		
			
				|  |  | +        if (updateCount <= 0) {
 | 
	
		
			
				|  |  | +            throw new BizException("订单更新失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Integer userId = studentPaymentOrder.getUserId();
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "购买会员支付失败");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //支付成功
 | 
	
		
			
				|  |  | +        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
 | 
	
		
			
				|  |  | +        	
 | 
	
		
			
				|  |  | +        	//添加会员有效时长
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //插入交易明细
 | 
	
		
			
				|  |  | +            BigDecimal amount = studentPaymentOrder.getActualAmount();
 | 
	
		
			
				|  |  | +            if (amount.compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +                SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
 | 
	
		
			
				|  |  | +                //充值
 | 
	
		
			
				|  |  | +                SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | +                rechargeDetail.setAmount(amount);
 | 
	
		
			
				|  |  | +                rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
 | 
	
		
			
				|  |  | +                rechargeDetail.setComment("缴费前充值");
 | 
	
		
			
				|  |  | +                rechargeDetail.setCreateTime(nowDate);
 | 
	
		
			
				|  |  | +                rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | +                rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
 | 
	
		
			
				|  |  | +                rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
 | 
	
		
			
				|  |  | +                rechargeDetail.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | +                rechargeDetail.setUserId(userId);
 | 
	
		
			
				|  |  | +                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | +                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
 | 
	
		
			
				|  |  | +                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  | +                sysUserCashAccountDetailService.insert(rechargeDetail);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //缴费
 | 
	
		
			
				|  |  | +                SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | +                paymentDetail.setAmount(amount.negate());
 | 
	
		
			
				|  |  | +                paymentDetail.setBalance(cashAccount.getBalance());
 | 
	
		
			
				|  |  | +                paymentDetail.setComment("购买会员");
 | 
	
		
			
				|  |  | +                paymentDetail.setCreateTime(nowDate);
 | 
	
		
			
				|  |  | +                paymentDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | +                paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
 | 
	
		
			
				|  |  | +                paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
 | 
	
		
			
				|  |  | +                paymentDetail.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | +                paymentDetail.setUserId(userId);
 | 
	
		
			
				|  |  | +                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | +                sysUserCashAccountDetailService.insert(paymentDetail);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                contractService.transferProduceContract(userId, null);
 | 
	
		
			
				|  |  | +            } catch (Exception e) {
 | 
	
		
			
				|  |  | +                logger.error("产品协议生成失败", e);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 |