|  | @@ -1,28 +1,35 @@
 | 
											
												
													
														|  |  package com.zanxiang.manage.service.Impl;
 |  |  package com.zanxiang.manage.service.Impl;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.core.metadata.IPage;
 |  |  import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
											
												
													
														|  | -import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 |  | 
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
											
												
													
														|  | 
 |  | +import com.zanxiang.common.enums.ApplicationTypeEnum;
 | 
											
												
													
														|  |  import com.zanxiang.common.enums.DeleteEnum;
 |  |  import com.zanxiang.common.enums.DeleteEnum;
 | 
											
												
													
														|  | 
 |  | +import com.zanxiang.common.enums.StatusEnum;
 | 
											
												
													
														|  | 
 |  | +import com.zanxiang.common.exception.BaseException;
 | 
											
												
													
														|  |  import com.zanxiang.common.utils.StringUtils;
 |  |  import com.zanxiang.common.utils.StringUtils;
 | 
											
												
													
														|  |  import com.zanxiang.common.utils.bean.BeanUtils;
 |  |  import com.zanxiang.common.utils.bean.BeanUtils;
 | 
											
												
													
														|  |  import com.zanxiang.manage.domain.mapper.PayBoxListMapper;
 |  |  import com.zanxiang.manage.domain.mapper.PayBoxListMapper;
 | 
											
												
													
														|  | 
 |  | +import com.zanxiang.manage.domain.params.PayBoxAddUpdateParam;
 | 
											
												
													
														|  |  import com.zanxiang.manage.domain.params.PayBoxListParam;
 |  |  import com.zanxiang.manage.domain.params.PayBoxListParam;
 | 
											
												
													
														|  | -import com.zanxiang.manage.domain.params.PayBoxParam;
 |  | 
 | 
											
												
													
														|  |  import com.zanxiang.manage.domain.vo.PayBoxListVO;
 |  |  import com.zanxiang.manage.domain.vo.PayBoxListVO;
 | 
											
												
													
														|  | 
 |  | +import com.zanxiang.manage.service.PayApplicationService;
 | 
											
												
													
														|  |  import com.zanxiang.manage.service.PayBoxService;
 |  |  import com.zanxiang.manage.service.PayBoxService;
 | 
											
												
													
														|  |  import com.zanxiang.manage.service.PayMerchantService;
 |  |  import com.zanxiang.manage.service.PayMerchantService;
 | 
											
												
													
														|  |  import com.zanxiang.mybatis.entity.PayBox;
 |  |  import com.zanxiang.mybatis.entity.PayBox;
 | 
											
												
													
														|  |  import com.zanxiang.mybatis.entity.PayMerchant;
 |  |  import com.zanxiang.mybatis.entity.PayMerchant;
 | 
											
												
													
														|  |  import com.zanxiang.mybatis.mapper.PayBoxMapper;
 |  |  import com.zanxiang.mybatis.mapper.PayBoxMapper;
 | 
											
												
													
														|  |  import lombok.extern.slf4j.Slf4j;
 |  |  import lombok.extern.slf4j.Slf4j;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
											
												
													
														|  |  import org.springframework.stereotype.Component;
 |  |  import org.springframework.stereotype.Component;
 | 
											
												
													
														|  |  import org.springframework.stereotype.Service;
 |  |  import org.springframework.stereotype.Service;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.transaction.annotation.Transactional;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import javax.annotation.Resource;
 |  |  import javax.annotation.Resource;
 | 
											
												
													
														|  | 
 |  | +import java.time.LocalDateTime;
 | 
											
												
													
														|  |  import java.util.ArrayList;
 |  |  import java.util.ArrayList;
 | 
											
												
													
														|  | -import java.util.List;
 |  | 
 | 
											
												
													
														|  |  import java.util.Map;
 |  |  import java.util.Map;
 | 
											
												
													
														|  | 
 |  | +import java.util.Objects;
 | 
											
												
													
														|  |  import java.util.stream.Collectors;
 |  |  import java.util.stream.Collectors;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  /**
 |  |  /**
 | 
											
										
											
												
													
														|  | @@ -42,36 +49,94 @@ public class PayBoxServiceImpl extends ServiceImpl<PayBoxMapper, PayBox> impleme
 | 
											
												
													
														|  |      @Resource
 |  |      @Resource
 | 
											
												
													
														|  |      private PayMerchantService payMerchantService;
 |  |      private PayMerchantService payMerchantService;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  | 
 |  | +    private PayApplicationService payApplicationService;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 分页获取应用列表
 | 
											
												
													
														|  | 
 |  | +     *
 | 
											
												
													
														|  | 
 |  | +     * @param param : 查询参数
 | 
											
												
													
														|  | 
 |  | +     * @return : 返回列表
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | -    public Boolean saveOrUpdate(PayBoxParam bo) {
 |  | 
 | 
											
												
													
														|  | -        PayBox app = BeanUtils.copy(bo, PayBox.class);
 |  | 
 | 
											
												
													
														|  | -        if (StringUtils.isNotEmpty(bo.getPayMerchantId())) {
 |  | 
 | 
											
												
													
														|  | -            app.setPayMerchantId("," + bo.getPayMerchantId() + ",");
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if (bo.getIsDelete() != null && bo.getIsDelete() == DeleteEnum.YES.getCode()) {
 |  | 
 | 
											
												
													
														|  | -            return removeById(bo.getId());
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public IPage<PayBoxListVO> list(PayBoxListParam param) {
 | 
											
												
													
														|  | 
 |  | +//        return page(param.toPage(), new LambdaQueryWrapper<PayBox>()
 | 
											
												
													
														|  | 
 |  | +//                .like(Strings.isNotBlank(param.getName()), PayBox::getName, param.getName())
 | 
											
												
													
														|  | 
 |  | +//                .eq(param.getPayApplicationType() != null, PayBox::getPayApplicationId, param.getPayApplicationId())
 | 
											
												
													
														|  | 
 |  | +//                .like(Strings.isNotBlank(param.getAppId()), PayApplication::getAppId, param.getAppId())
 | 
											
												
													
														|  | 
 |  | +//                .like(Strings.isNotBlank(param.getCompany()), PayApplication::getCompany, param.getCompany())
 | 
											
												
													
														|  | 
 |  | +//                .orderByDesc(PayApplication::getCreateTime))
 | 
											
												
													
														|  | 
 |  | +//                .convert(this::toVo);
 | 
											
												
													
														|  | 
 |  | +        return null;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 给签证官
 | 
											
												
													
														|  | 
 |  | +     *
 | 
											
												
													
														|  | 
 |  | +     * @param payBox 支付盒子
 | 
											
												
													
														|  | 
 |  | +     * @return {@link PayBoxListVO}
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    private PayBoxListVO toVo(PayBox payBox) {
 | 
											
												
													
														|  | 
 |  | +        PayBoxListVO payBoxListVO = BeanUtils.copy(payBox, PayBoxListVO.class);
 | 
											
												
													
														|  | 
 |  | +        if (Objects.isNull(payBoxListVO)) {
 | 
											
												
													
														|  | 
 |  | +            return null;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        return saveOrUpdate(app);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        payBoxListVO.setTypeName(ApplicationTypeEnum.getDescByType(payBoxListVO.getType()));
 | 
											
												
													
														|  | 
 |  | +        return payBoxListVO;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 支付应用添加或者更新
 | 
											
												
													
														|  | 
 |  | +     *
 | 
											
												
													
														|  | 
 |  | +     * @param param : 参数
 | 
											
												
													
														|  | 
 |  | +     * @return : 返回结果
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | -    public IPage<PayBoxListVO> list(PayBoxListParam param) {
 |  | 
 | 
											
												
													
														|  | -        Page<PayBox> page = new Page<>(param.getPageNum(), param.getPageSize());
 |  | 
 | 
											
												
													
														|  | -        IPage<PayBoxListVO> payBoxList = payBoxListMapper.payBoxList(page, param.getName(), param.getPayApplicationName(), param.getAppId(), param.getCompany(), param.getPayMerchantId(), param.getPayApplicationType()
 |  | 
 | 
											
												
													
														|  | -        );
 |  | 
 | 
											
												
													
														|  | -        if (payBoxList.getSize() == 0) {
 |  | 
 | 
											
												
													
														|  | -            return null;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    @Transactional(rollbackFor = Exception.class)
 | 
											
												
													
														|  | 
 |  | +    public Boolean addOrUpdate(PayBoxAddUpdateParam param) {
 | 
											
												
													
														|  | 
 |  | +        Long id = param.getId();
 | 
											
												
													
														|  | 
 |  | +        //更新
 | 
											
												
													
														|  | 
 |  | +        if (id != null) {
 | 
											
												
													
														|  | 
 |  | +            PayBox payBox = super.getById(id);
 | 
											
												
													
														|  | 
 |  | +            if (payBox == null) {
 | 
											
												
													
														|  | 
 |  | +                throw new BaseException("参数错误, 支付盒子信息不存在");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            //更新时, 盒子名字不可重复
 | 
											
												
													
														|  | 
 |  | +            if (!Objects.equals(payBox.getName(), param.getName())) {
 | 
											
												
													
														|  | 
 |  | +                //判断应用是否已经存在
 | 
											
												
													
														|  | 
 |  | +                int count = super.count(new LambdaQueryWrapper<PayBox>().eq(PayBox::getName, param.getName()));
 | 
											
												
													
														|  | 
 |  | +                if (count > 0) {
 | 
											
												
													
														|  | 
 |  | +                    throw new BaseException("支付盒子名称已经存在");
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            payBox.setName(param.getName());
 | 
											
												
													
														|  | 
 |  | +            payBox.setPayApplicationId(param.getPayApplicationId());
 | 
											
												
													
														|  | 
 |  | +            payBox.setPayMerchantId(StringUtils.join(param.getPayMerchantIds(), ","));
 | 
											
												
													
														|  | 
 |  | +            payBox.setType(param.getType());
 | 
											
												
													
														|  | 
 |  | +            payBox.setRemark(param.getRemark());
 | 
											
												
													
														|  | 
 |  | +            payBox.setUpdateTime(LocalDateTime.now());
 | 
											
												
													
														|  | 
 |  | +            return super.updateById(payBox);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //判断名称是否已经存在
 | 
											
												
													
														|  | 
 |  | +        int count = super.count(new LambdaQueryWrapper<PayBox>().eq(PayBox::getName, param.getName()));
 | 
											
												
													
														|  | 
 |  | +        if (count > 0) {
 | 
											
												
													
														|  | 
 |  | +            throw new BaseException("支付盒子名称已经存在");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        //获取商户号列表
 |  | 
 | 
											
												
													
														|  | -        List<PayMerchant> payMerchantList = payMerchantService.list();
 |  | 
 | 
											
												
													
														|  | -        Map<String, PayMerchant> payMerchantData = payMerchantList.stream().collect(Collectors.toMap(PayMerchant::getMerchantNo, PayMerchant -> PayMerchant));
 |  | 
 | 
											
												
													
														|  | -        //循环set商户号详情
 |  | 
 | 
											
												
													
														|  | -        payBoxList.getRecords().stream().filter(t -> StringUtils.isNotEmpty(t.getPayMerchantId())).forEach(t -> {
 |  | 
 | 
											
												
													
														|  | -            t.setPayMerchantDetail(getMerchantDetail(payMerchantData, t.getPayMerchantId()));
 |  | 
 | 
											
												
													
														|  | -        });
 |  | 
 | 
											
												
													
														|  | -        return payBoxList;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        //创建
 | 
											
												
													
														|  | 
 |  | +        return super.save(PayBox.builder()
 | 
											
												
													
														|  | 
 |  | +                .name(param.getName())
 | 
											
												
													
														|  | 
 |  | +                .payApplicationId(param.getPayApplicationId())
 | 
											
												
													
														|  | 
 |  | +                .payMerchantId(StringUtils.join(param.getPayMerchantIds(), ","))
 | 
											
												
													
														|  | 
 |  | +                .type(param.getType())
 | 
											
												
													
														|  | 
 |  | +                .remark(param.getRemark())
 | 
											
												
													
														|  | 
 |  | +                .status(StatusEnum.YES.getCode())
 | 
											
												
													
														|  | 
 |  | +                .isDelete(DeleteEnum.NO.getCode())
 | 
											
												
													
														|  | 
 |  | +                .createTime(LocalDateTime.now())
 | 
											
												
													
														|  | 
 |  | +                .updateTime(LocalDateTime.now())
 | 
											
												
													
														|  | 
 |  | +                .build());
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    //------------------------------------------------- 准备删除的旧代码 -------------------------------------------------
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
												
													
														|  |       * 通过商户号id获取商户号简介
 |  |       * 通过商户号id获取商户号简介
 |