puzhibing
2023-10-20 7fd3525256b0e4a0dbb6f08405368990619adf36
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -1,17 +1,21 @@
package com.ruoyi.shop.service.impl.shop;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult;
import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverRequest;
import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
@@ -30,6 +34,7 @@
import com.ruoyi.shop.service.task.MemberTaskService;
import com.ruoyi.shop.service.task.ShopFileService;
import com.ruoyi.shop.service.task.ShopTaskService;
import com.ruoyi.shop.util.HuiFuTianXiaUtil;
import com.ruoyi.shop.util.WechatPayUtils;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.constant.SecurityConstant;
@@ -41,12 +46,16 @@
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.*;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.rmi.ServerException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -100,6 +109,9 @@
    private ShopAuthenticationService shopAuthenticationService;
    @Resource
    private ShopAuthenticationHftxService shopAuthenticationHftxService;
    @Resource
    private ShopProportionService shopProportionService;
    @Resource
@@ -134,6 +146,9 @@
    @Resource
    private RemoteUserService remoteUserService;
    @Value("${callback_path}")
    private String callback_path;
@@ -1015,6 +1030,17 @@
    }
    /**
     * 商户进件列表数据(汇付天下)
     * @param page
     * @param mgtShopAuthPageDto
     * @return
     */
    @Override
    public List<MgtShopHFTXAuthPageVo> pageMgtShopHFTXAuth(Page page, MgtShopHFTXAuthPageDto mgtShopAuthPageDto) {
        return shopMapper.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto);
    }
    /**
     * @description boardShopTotal
     * @param
     * @return MgtBulletinBoardVo
@@ -1070,7 +1096,70 @@
     */
    @Override
    public void mgtShopHFTXAuth(MgtShopHFTXAuthDto mgtShopHFTXAuthDto) {
        ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("shop_id", mgtShopHFTXAuthDto.getShopId()));
        if(null != shopAuthenticationHftx && "Y".equals(shopAuthenticationHftx.getAuditStatus())){
            throw new ServiceException("不能重复进件");
        }
        if(null == shopAuthenticationHftx){
            shopAuthenticationHftx = new ShopAuthenticationHftx();
            shopAuthenticationHftx.setIsDelete(0);
            shopAuthenticationHftx.setInsertTime(new Date());
        }
        BeanUtils.copyProperties(mgtShopHFTXAuthDto, shopAuthenticationHftx);
        shopAuthenticationHftx.setReqSeqId(IdUtils.simpleUUID());
        shopAuthenticationHftx.setAuditStatus("");
        shopAuthenticationHftx.setAuditDesc("");
        /**
         * 开始调起进件接口
         */
        R<MerchantBasicdataVo> r = null;
        //用户
        if(mgtShopHFTXAuthDto.getType() == 1){
            r = HuiFuTianXiaUtil.merchantBasicdataIndv(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
        }
        //企业进件
        if(mgtShopHFTXAuthDto.getType() == 2){
            r = HuiFuTianXiaUtil.merchantBasicdataEnt(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify");
        }
        if(null == r){
            throw new ServiceException("参数异常");
        }
        if(r.getCode() == 200){
            MerchantBasicdataVo data = r.getData();
            shopAuthenticationHftx.setAuditStatus("U");
            shopAuthenticationHftx.setHuifuId(data.getHuifuId());
            shopAuthenticationHftx.setTokenNo(data.getTokenNo());
            shopAuthenticationHftx.setApplyNo(data.getApplyNo());
            shopAuthenticationHftxService.saveOrUpdate(shopAuthenticationHftx);
        }else{
            throw new ServiceException(r.getMsg());
        }
    }
    /**
     * 商户进件异步通知
     * @param jsonObject
     * @return
     */
    @Override
    public R<String> merchantBasicdataNotify(JSONObject jsonObject) {
        R<MerchantBasicdataVo> merchantBasicdataVoR = HuiFuTianXiaUtil.merchantBasicDataNotify(jsonObject);
        if(merchantBasicdataVoR.getCode() != 200){
            return R.fail(merchantBasicdataVoR.getMsg());
        }
        MerchantBasicdataVo data = merchantBasicdataVoR.getData();
        ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("req_seq_id", data.getReqSeqId()));
        if(!org.springframework.util.StringUtils.hasLength(shopAuthenticationHftx.getAuditStatus())){
            shopAuthenticationHftx.setAuditStatus(data.getAuditStatus());
            shopAuthenticationHftx.setAuditDesc(data.getAuditDesc());
            shopAuthenticationHftx.setHuifuId(data.getHuifuId());
            shopAuthenticationHftx.setTokenNo(data.getTokenNo());
            shopAuthenticationHftx.setApplyNo(data.getApplyNo());
            shopAuthenticationHftxService.updateById(shopAuthenticationHftx);
        }
        return R.ok(data.getReqSeqId());
    }
    /**
@@ -1209,6 +1298,23 @@
            }
        }
        return shopAuthGetVo;
    }
    /**
     * 获取商户审核资料(汇付天下)
     * @param shopId
     * @return
     */
    @Override
    public MgtShopHFTXAuthGetVo getMgtShopHFTXAuthInfo(Long shopId) {
        ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("shop_id", shopId));
        MgtShopHFTXAuthGetVo mgtShopHFTXAuthGetVo = new MgtShopHFTXAuthGetVo();
        if(null == shopAuthenticationHftx){
            return mgtShopHFTXAuthGetVo;
        }
        BeanUtils.copyProperties(shopAuthenticationHftx, mgtShopHFTXAuthGetVo);
        return mgtShopHFTXAuthGetVo;
    }
    /**
@@ -1650,4 +1756,39 @@
        return shopMapper.getTaskMsgList();
    }
    /**
     * 设置商户分账比例
     * @param mgtShopShareRatioSetDto
     * @return
     */
    @Override
    public R setMgtShopShareRatio(MgtShopShareRatioSetDto mgtShopShareRatioSetDto) {
        ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>()
                .eq("shop_id", mgtShopShareRatioSetDto.getShopId()).eq("is_delete", 0));
        shopAuthenticationHftx.setShareRatio(mgtShopShareRatioSetDto.getShareRatio());
        shopAuthenticationHftxService.updateById(shopAuthenticationHftx);
        return R.ok();
    }
    /**
     * 查询结算记录
     * @param merchantBasicdataSettlementDto
     * @return
     */
    @Override
    public R<List<MerchantBasicdataSettlementVo>> getMerchantBasicDataSettlement(MerchantBasicdataSettlementDto merchantBasicdataSettlementDto) {
        ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>()
                .eq("shop_id", merchantBasicdataSettlementDto.getShopId()).eq("is_delete", 0));
        if(null == shopAuthenticationHftx){
            return R.ok(new ArrayList<>());
        }
        String huifuId = shopAuthenticationHftx.getHuifuId();
        String startTime = merchantBasicdataSettlementDto.getStartTime();
        String endTime = merchantBasicdataSettlementDto.getEndTime();
        Integer pageNum = merchantBasicdataSettlementDto.getPageNum();
        Integer pageSize = merchantBasicdataSettlementDto.getPageSize();
        return HuiFuTianXiaUtil.getMerchantBasicdataSettlement(IdUtils.randomUUID(), huifuId, startTime, endTime, pageNum.toString(), pageSize.toString());
    }
}