| @@ -66,8 +66,6 @@ public class BaseController { | |||||
| @Autowired | @Autowired | ||||
| private MemCouponFromDspService memCouponFromDspService; | private MemCouponFromDspService memCouponFromDspService; | ||||
| @Autowired | |||||
| private WxPayAccountService wxPayAccountService; | |||||
| @Autowired | @Autowired | ||||
| @Qualifier("objectCommonRedisTemplate") | @Qualifier("objectCommonRedisTemplate") | ||||
| @@ -5,7 +5,6 @@ import com.github.binarywang.wxpay.exception.WxPayException; | |||||
| import com.github.binarywang.wxpay.service.WxPayService; | import com.github.binarywang.wxpay.service.WxPayService; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.service.WxPayAccountService; | |||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
| @@ -18,22 +17,9 @@ import java.util.UUID; | |||||
| @Slf4j | @Slf4j | ||||
| public class MerchantMediaUpload { | public class MerchantMediaUpload { | ||||
| @Autowired | |||||
| WxPayAccountService wxPayAccountService; | |||||
| public String mediaUpload(String tenantId, String suffix,InputStream inputStream){ | public String mediaUpload(String tenantId, String suffix,InputStream inputStream){ | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantId); | |||||
| String fileName = UUID.randomUUID().toString().replace("-","") + suffix; | |||||
| try { | |||||
| ImageUploadResult uploadResult = wxPayService.getMerchantMediaService().imageUploadV3(inputStream,fileName); | |||||
| return uploadResult.getMediaId(); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"上传微信错误"); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @@ -1,50 +0,0 @@ | |||||
| package com.iformall.service; | |||||
| import com.github.binarywang.wxpay.service.WxPayService; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxAppinfo; | |||||
| import com.iformall.domain.po.WxPayAccount; | |||||
| import com.iformall.domain.po.WxProjectConfig; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.enums.EnumAppPlat; | |||||
| public interface WxPayAccountService { | |||||
| /** | |||||
| * 根据实体查询分页列表 | |||||
| * | |||||
| * @param record | |||||
| * @param pageIndex | |||||
| * @param pageSize | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxPayAccount> listAsPage(WxPayAccount record, Integer pageIndex, Integer pageSize); | |||||
| /** | |||||
| * 根据Id获得实体 | |||||
| * | |||||
| * @param id | |||||
| * @return | |||||
| */ | |||||
| WxPayAccount getById(Long id); | |||||
| WxPayAccount getByIdFromRedis(Long id); | |||||
| /** | |||||
| * 保存或更新实体 | |||||
| * | |||||
| * @param record | |||||
| */ | |||||
| void saveOrUpdate(WxPayAccount record); | |||||
| /** | |||||
| * 根据Id删除实体 | |||||
| * | |||||
| * @param id | |||||
| */ | |||||
| void deleteById(Long id); | |||||
| WxPayAccount getPayAccount(TenantEntity tenantEntity, EnumAppPlat appPlat); | |||||
| WxPayService getWxPayService(String tenantId); | |||||
| } | |||||
| @@ -9,7 +9,6 @@ import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxBankProvinceCity; | import com.iformall.domain.po.WxBankProvinceCity; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.mapper.WxBankProvinceCityMapper; | import com.iformall.mapper.WxBankProvinceCityMapper; | ||||
| import com.iformall.service.WxPayAccountService; | |||||
| import com.iformall.service.bank.WxBankUtilService; | import com.iformall.service.bank.WxBankUtilService; | ||||
| import com.iformall.utils.RedisCacheUtils; | import com.iformall.utils.RedisCacheUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| @@ -33,8 +32,6 @@ public class WxBankUtilServiceImpl implements WxBankUtilService { | |||||
| private final String otherBank = "其他银行"; | private final String otherBank = "其他银行"; | ||||
| @Autowired | |||||
| WxPayAccountService wxPayAccountService; | |||||
| @Autowired | @Autowired | ||||
| WxBankProvinceCityMapper wxBankProvinceCityMapper; | WxBankProvinceCityMapper wxBankProvinceCityMapper; | ||||
| @@ -45,133 +42,31 @@ public class WxBankUtilServiceImpl implements WxBankUtilService { | |||||
| @Override | @Override | ||||
| public ResultData searchBanksByBankAccount(TenantEntity tenantInfo,String accountNumber) { | public ResultData searchBanksByBankAccount(TenantEntity tenantInfo,String accountNumber) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| BankAccountResult bankAccountResult = wxPayService.getBankService().searchBanksByBankAccount(accountNumber); | |||||
| return new ResultData(bankAccountResult.getData()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData personalBanking(TenantEntity tenantInfo, int offset, int limit) { | public ResultData personalBanking(TenantEntity tenantInfo, int offset, int limit) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| BankingResult bankingResult = wxPayService.getBankService().personalBanking(offset,limit); | |||||
| this.handlBankingResult(bankingResult.getData()); | |||||
| return new ResultData(bankingResult.getData()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData personalBanking(TenantEntity tenantInfo) { | public ResultData personalBanking(TenantEntity tenantInfo) { | ||||
| String prev = "personal_banking:"; | String prev = "personal_banking:"; | ||||
| List<BankInfo> bankInfoList = new ArrayList<>(); | List<BankInfo> bankInfoList = new ArrayList<>(); | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| int offset = 0, limit = 200; | int offset = 0, limit = 200; | ||||
| try { | |||||
| BankingResult bankingResult = wxPayService.getBankService().personalBanking(offset,limit); | |||||
| this.handlBankingResult(bankingResult.getData()); | |||||
| bankInfoList.addAll(bankingResult.getData()); | |||||
| String key = prev+offset+"_"+limit; | |||||
| BankingResult cacheObject = RedisCacheUtils.getCacheObject(bankRedisTemplate, key, BankingResult.class); | |||||
| boolean isNeedSearch = false; | |||||
| if(cacheObject == null || !bankingResult.getTotalCount().equals(cacheObject.getTotalCount())){ | |||||
| RedisCacheUtils.cache(bankRedisTemplate,key,bankingResult,0); | |||||
| isNeedSearch = true; | |||||
| } | |||||
| offset += limit; | |||||
| while (offset + limit < bankingResult.getTotalCount()){ | |||||
| String nextkey = prev+offset+"_"+limit; | |||||
| BankingResult nextBankingResult = null; | |||||
| if(!isNeedSearch){ | |||||
| nextBankingResult = RedisCacheUtils.getCacheObject(bankRedisTemplate, nextkey, BankingResult.class); | |||||
| } | |||||
| if(nextBankingResult == null){ | |||||
| try{ | |||||
| nextBankingResult = wxPayService.getBankService().personalBanking(offset,limit); | |||||
| this.handlBankingResult(nextBankingResult.getData()); | |||||
| if(nextBankingResult != null){ | |||||
| RedisCacheUtils.cache(bankRedisTemplate,nextkey,nextBankingResult,0); | |||||
| } | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| if(nextBankingResult != null){ | |||||
| bankInfoList.addAll(nextBankingResult.getData()); | |||||
| } | |||||
| offset += limit; | |||||
| } | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return new ResultData(bankInfoList); | return new ResultData(bankInfoList); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData corporateBanking(TenantEntity tenantInfo, int offset, int limit) { | public ResultData corporateBanking(TenantEntity tenantInfo, int offset, int limit) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| BankingResult bankingResult = wxPayService.getBankService().corporateBanking(offset,limit); | |||||
| this.handlBankingResult(bankingResult.getData()); | |||||
| return new ResultData(bankingResult.getData()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData corporateBanking(TenantEntity tenantInfo) { | public ResultData corporateBanking(TenantEntity tenantInfo) { | ||||
| String prev = "corporate_banking:"; | String prev = "corporate_banking:"; | ||||
| List<BankInfo> bankInfoList = new ArrayList<>(); | List<BankInfo> bankInfoList = new ArrayList<>(); | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| int offset = 0, limit = 200; | |||||
| try { | |||||
| BankingResult bankingResult = wxPayService.getBankService().corporateBanking(offset,limit); | |||||
| this.handlBankingResult(bankingResult.getData()); | |||||
| bankInfoList.addAll(bankingResult.getData()); | |||||
| String key = prev+offset+"_"+limit; | |||||
| BankingResult cacheObject = RedisCacheUtils.getCacheObject(bankRedisTemplate, key, BankingResult.class); | |||||
| boolean isNeedSearch = false; | |||||
| if(cacheObject == null || !bankingResult.getTotalCount().equals(cacheObject.getTotalCount())){ | |||||
| RedisCacheUtils.cache(bankRedisTemplate,key,bankingResult,0); | |||||
| isNeedSearch = true; | |||||
| } | |||||
| offset += limit; | |||||
| while (offset + limit < bankingResult.getTotalCount()){ | |||||
| String nextkey = prev+offset+"_"+limit; | |||||
| BankingResult nextBankingResult = null; | |||||
| if(!isNeedSearch){ | |||||
| nextBankingResult = RedisCacheUtils.getCacheObject(bankRedisTemplate, nextkey, BankingResult.class); | |||||
| } | |||||
| if(nextBankingResult == null){ | |||||
| try{ | |||||
| nextBankingResult = wxPayService.getBankService().corporateBanking(offset,limit); | |||||
| this.handlBankingResult(nextBankingResult.getData()); | |||||
| if(nextBankingResult != null){ | |||||
| RedisCacheUtils.cache(bankRedisTemplate,nextkey,nextBankingResult,0); | |||||
| } | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| if(nextBankingResult != null){ | |||||
| bankInfoList.addAll(nextBankingResult.getData()); | |||||
| } | |||||
| offset += limit; | |||||
| } | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return new ResultData(bankInfoList); | return new ResultData(bankInfoList); | ||||
| } | } | ||||
| @@ -195,126 +90,27 @@ public class WxBankUtilServiceImpl implements WxBankUtilService { | |||||
| @Override | @Override | ||||
| public ResultData areasProvinces(TenantEntity tenantInfo) { | public ResultData areasProvinces(TenantEntity tenantInfo) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| ProvincesResult provincesResult = wxPayService.getBankService().areasProvinces(); | |||||
| return new ResultData(provincesResult.getData()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData areasCities(TenantEntity tenantInfo, Integer provinceCode) { | public ResultData areasCities(TenantEntity tenantInfo, Integer provinceCode) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| CitiesResult citiesResult = wxPayService.getBankService().areasCities(provinceCode); | |||||
| return new ResultData(citiesResult.getData()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData bankBranches(TenantEntity tenantInfo, String bankAliasCode, Integer cityCode, int offset, int limit) { | public ResultData bankBranches(TenantEntity tenantInfo, String bankAliasCode, Integer cityCode, int offset, int limit) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| BankBranchesResult bankBranchesResult = wxPayService.getBankService().bankBranches(bankAliasCode,cityCode,offset,limit); | |||||
| return new ResultData(bankBranchesResult.getData()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData bankBranches(TenantEntity tenantInfo, String bankAliasCode, Integer cityCode) { | public ResultData bankBranches(TenantEntity tenantInfo, String bankAliasCode, Integer cityCode) { | ||||
| String prev = "bank_branches:"; | |||||
| List<BankBranchesResult.BankBranch> bankInfoList = new ArrayList<>(); | |||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| int offset = 0, limit = 200; | |||||
| try { | |||||
| BankBranchesResult bankBranchesResult = wxPayService.getBankService().bankBranches(bankAliasCode,cityCode,offset,limit); | |||||
| bankInfoList.addAll(bankBranchesResult.getData()); | |||||
| String key = prev+offset+"_"+limit; | |||||
| BankBranchesResult cacheObject = RedisCacheUtils.getCacheObject(bankRedisTemplate, key, BankBranchesResult.class); | |||||
| boolean isNeedSearch = false; | |||||
| if(cacheObject == null || !bankBranchesResult.getTotalCount().equals(cacheObject.getTotalCount())){ | |||||
| RedisCacheUtils.cache(bankRedisTemplate,key,bankBranchesResult,0); | |||||
| isNeedSearch = true; | |||||
| } | |||||
| offset += limit; | |||||
| while (offset + limit < bankBranchesResult.getTotalCount()){ | |||||
| String nextkey = prev+offset+"_"+limit; | |||||
| BankBranchesResult nextBankBranchesResult = null; | |||||
| if(!isNeedSearch){ | |||||
| nextBankBranchesResult = RedisCacheUtils.getCacheObject(bankRedisTemplate, nextkey, BankBranchesResult.class); | |||||
| } | |||||
| if(nextBankBranchesResult == null){ | |||||
| try{ | |||||
| nextBankBranchesResult = wxPayService.getBankService().bankBranches(bankAliasCode,cityCode,offset,limit); | |||||
| if(nextBankBranchesResult != null){ | |||||
| RedisCacheUtils.cache(bankRedisTemplate,nextkey,nextBankBranchesResult,0); | |||||
| } | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| if(nextBankBranchesResult != null){ | |||||
| bankInfoList.addAll(nextBankBranchesResult.getData()); | |||||
| } | |||||
| offset += limit; | |||||
| } | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return new ResultData(bankInfoList); | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| public ResultData initProvincesCities(TenantEntity tenantInfo) { | public ResultData initProvincesCities(TenantEntity tenantInfo) { | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); | |||||
| try { | |||||
| ProvincesResult provincesResult = wxPayService.getBankService().areasProvinces(); | |||||
| for (ProvincesResult.ProvinceInfo provinceInfo:provincesResult.getData()) { | |||||
| WxBankProvinceCity provinceQuery = new WxBankProvinceCity(); | |||||
| provinceQuery.setProvinceCode(provinceInfo.getProvinceCode()); | |||||
| provinceQuery.setProvinceName(provinceInfo.getProvinceName()); | |||||
| WxBankProvinceCity province = wxBankProvinceCityMapper.selectOne(new QueryWrapper<>(provinceQuery)); | |||||
| if(province == null){ | |||||
| province = new WxBankProvinceCity(); | |||||
| province.setParentId(0l); | |||||
| province.setProvinceCode(provinceInfo.getProvinceCode()); | |||||
| province.setProvinceName(provinceInfo.getProvinceName()); | |||||
| wxBankProvinceCityMapper.insert(province); | |||||
| } | |||||
| CitiesResult citiesResult = wxPayService.getBankService().areasCities(provinceInfo.getProvinceCode()); | |||||
| for (CitiesResult.CityInfo cityInfo:citiesResult.getData()) { | |||||
| WxBankProvinceCity cityQuery = new WxBankProvinceCity(); | |||||
| cityQuery.setProvinceCode(provinceInfo.getProvinceCode()); | |||||
| cityQuery.setProvinceName(provinceInfo.getProvinceName()); | |||||
| cityQuery.setCityCode(cityInfo.getCityCode()); | |||||
| cityQuery.setCityName(cityInfo.getCityName()); | |||||
| WxBankProvinceCity city = wxBankProvinceCityMapper.selectOne(new QueryWrapper<>(cityQuery)); | |||||
| if(city == null){ | |||||
| city = new WxBankProvinceCity(); | |||||
| city.setParentId(province.getId()); | |||||
| city.setProvinceCode(provinceInfo.getProvinceCode()); | |||||
| city.setProvinceName(provinceInfo.getProvinceName()); | |||||
| city.setCityCode(cityInfo.getCityCode()); | |||||
| city.setCityName(cityInfo.getCityName()); | |||||
| } | |||||
| } | |||||
| } | |||||
| return new ResultData(); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -68,8 +68,6 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| @Autowired | @Autowired | ||||
| WxAppinfoService wxAppinfoService; | WxAppinfoService wxAppinfoService; | ||||
| @Autowired | |||||
| WxPayAccountService wxPayAccountService; | |||||
| @Autowired | @Autowired | ||||
| TtPoiTakeRateMapper ttPoiTakeRateMapper; | TtPoiTakeRateMapper ttPoiTakeRateMapper; | ||||
| @@ -588,35 +586,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| if(couponAppInfo == null || couponAppInfo.getPayId() == null){ | if(couponAppInfo == null || couponAppInfo.getPayId() == null){ | ||||
| return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | ||||
| } | } | ||||
| WxPayAccount payAccount = wxPayAccountService.getById(couponAppInfo.getPayId()); | |||||
| if(payAccount == null){ | |||||
| return new ResultData(ErrorCode.API_KEY_NOT_FOUND); | |||||
| } | |||||
| map.put("realRate",payAccount.getRealRate()); | |||||
| int rate = 0; | |||||
| if(EnumYesOrNo.YES.getCode().equals(payAccount.getIsCommission())){ | |||||
| map.put("systemRate",payAccount.getSystemRate()+payAccount.getSellRate()); | |||||
| rate = payAccount.getRealRate()+payAccount.getSystemRate()+payAccount.getSellRate(); | |||||
| }else{ | |||||
| rate = payAccount.getRealRate(); | |||||
| } | |||||
| if(EnumAppPlat.TOUTIAO.getCode().equals(couponAppInfo.getPlat())){ | |||||
| if(wxCoupon.getCategoryId() == null){ | |||||
| return new ResultData(ErrorCode.COUPON_ORDER_TYPE_NOT_SUPPORTED.getCode(),"卡券信息错误"); | |||||
| } | |||||
| TtGoodsCategory ttGoodsCategory = ttGoodsCategoryMapper.selectById(wxCoupon.getCategoryId()); | |||||
| map.put("serviceFeeRate",ttGoodsCategory.getServiceFee()-payAccount.getRealRate()); | |||||
| rate = rate-payAccount.getRealRate()+ttGoodsCategory.getServiceFee(); | |||||
| Integer maxTakeRate = ttPoiTakeRateMapper.getMaxTakeRate(wxCoupon.getTenantId(), wxCoupon.getId()); | |||||
| if(maxTakeRate != null){ | |||||
| rate += maxTakeRate; | |||||
| } | |||||
| } | |||||
| map.put("mallMax",getAllMax()); | map.put("mallMax",getAllMax()); | ||||
| map.put("mallMin",rate); | |||||
| return new ResultData(map); | return new ResultData(map); | ||||
| } | } | ||||
| @@ -659,19 +630,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| if(couponAppInfo == null || couponAppInfo.getPayId() == null){ | if(couponAppInfo == null || couponAppInfo.getPayId() == null){ | ||||
| throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); | throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); | ||||
| } | } | ||||
| WxPayAccount payAccount = wxPayAccountService.getById(couponAppInfo.getPayId()); | |||||
| if(payAccount == null){ | |||||
| throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND); | |||||
| } | |||||
| int rate = 0; | int rate = 0; | ||||
| rate = payAccount.getRealRate()+payAccount.getSystemRate()+payAccount.getSellRate(); | |||||
| if(EnumAppPlat.TOUTIAO.getCode().equals(couponAppInfo.getPlat())){ | |||||
| if(wxCoupon.getCategoryId() == null){ | |||||
| throw new MallinkException(ErrorCode.COUPON_ORDER_TYPE_NOT_SUPPORTED.getCode(),"卡券信息错误"); | |||||
| } | |||||
| TtGoodsCategory ttGoodsCategory = ttGoodsCategoryMapper.selectById(wxCoupon.getCategoryId()); | |||||
| rate = rate-payAccount.getRealRate()+ttGoodsCategory.getServiceFee(); | |||||
| } | |||||
| if(takeRate > rate){ | if(takeRate > rate){ | ||||
| rate = takeRate - rate; | rate = takeRate - rate; | ||||
| return rate; | return rate; | ||||
| @@ -702,27 +661,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| if(couponAppInfo == null || couponAppInfo.getPayId() == null){ | if(couponAppInfo == null || couponAppInfo.getPayId() == null){ | ||||
| throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); | throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); | ||||
| } | } | ||||
| WxPayAccount payAccount = wxPayAccountService.getById(couponAppInfo.getPayId()); | |||||
| if(payAccount == null){ | |||||
| throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND); | |||||
| } | |||||
| int rate = 0; | int rate = 0; | ||||
| if(EnumYesOrNo.YES.getCode().equals(payAccount.getIsCommission())){ | |||||
| rate = payAccount.getRealRate()+payAccount.getSystemRate()+payAccount.getSellRate(); | |||||
| }else{ | |||||
| rate = payAccount.getRealRate(); | |||||
| } | |||||
| if(EnumAppPlat.TOUTIAO.getCode().equals(couponAppInfo.getPlat())){ | |||||
| if(wxCoupon.getCategoryId() == null){ | |||||
| throw new MallinkException(ErrorCode.COUPON_ORDER_TYPE_NOT_SUPPORTED.getCode(),"卡券信息错误"); | |||||
| } | |||||
| TtGoodsCategory ttGoodsCategory = ttGoodsCategoryMapper.selectById(wxCoupon.getCategoryId()); | |||||
| rate = rate-payAccount.getRealRate()+ttGoodsCategory.getServiceFee(); | |||||
| Integer maxTakeRate = ttPoiTakeRateMapper.getMaxTakeRate(wxCoupon.getTenantId(), wxCoupon.getId()); | |||||
| if(maxTakeRate != null){ | |||||
| rate += maxTakeRate; | |||||
| } | |||||
| } | |||||
| return rate; | return rate; | ||||
| } | } | ||||
| @@ -42,8 +42,6 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR | |||||
| WxAppinfoService wxAppinfoService; | WxAppinfoService wxAppinfoService; | ||||
| @Autowired | |||||
| WxPayAccountService wxPayAccountService; | |||||
| @Override | @Override | ||||
| public PageInfo<WxProfitSharingReceiverApply> listAsPage(WxProfitSharingReceiverApply record, Integer pageIndex, Integer pageSize) { | public PageInfo<WxProfitSharingReceiverApply> listAsPage(WxProfitSharingReceiverApply record, Integer pageIndex, Integer pageSize) { | ||||
| @@ -114,45 +112,7 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR | |||||
| @Transactional(rollbackFor = {Exception.class}) | @Transactional(rollbackFor = {Exception.class}) | ||||
| public ResultData handApplymentStates(WxProfitSharingReceiverApply receiverApply) { | public ResultData handApplymentStates(WxProfitSharingReceiverApply receiverApply) { | ||||
| if(receiverApply == null || !EnumSharingReceiverApplymentState.getNeedSyncList().contains(receiverApply.getApplymentState())){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该状态无需同步"); | |||||
| return new ResultData(receiverApply); | |||||
| } | |||||
| try { | |||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(receiverApply.getTenantId()); | |||||
| ApplymentStateQueryResult applymentStateQueryResult = wxPayService.getApplyment4SubService().queryApplyStatusByBusinessCode(receiverApply.getOutRequestNo()); | |||||
| EnumSharingReceiverApplymentState enumApplymentState = EnumSharingReceiverApplymentState.getEnum(applymentStateQueryResult.getApplymentState()); | |||||
| if(enumApplymentState != null && !enumApplymentState.getCode().equals(receiverApply.getApplymentState())){ | |||||
| WxProfitSharingReceiverApply receiverApplyUpd = new WxProfitSharingReceiverApply(); | |||||
| receiverApplyUpd.updateTenantInfo(receiverApply); | |||||
| receiverApplyUpd.setId(receiverApply.getId()); | |||||
| if(enumApplymentState.equals(EnumSharingReceiverApplymentState.APPLYMENT_STATE_FINISHED)){ | |||||
| receiverApplyUpd.setSubMchid(applymentStateQueryResult.getSubMchid()); | |||||
| } | |||||
| receiverApplyUpd.setSignUrl(applymentStateQueryResult.getSignUrl()); | |||||
| receiverApplyUpd.setApplymentState(enumApplymentState.getCode()); | |||||
| receiverApplyUpd.setApplymentStateDesc(applymentStateQueryResult.getApplymentStateMsg()); | |||||
| if(enumApplymentState.equals(EnumSharingReceiverApplymentState.APPLYMENT_STATE_REJECTED)){ | |||||
| receiverApplyUpd.setAuditDetail(JSON.toJSONString(applymentStateQueryResult.getAuditDetail())); | |||||
| }else{ | |||||
| receiverApplyUpd.setAuditDetail("[]"); | |||||
| } | |||||
| receiverApplyUpd.setUpdateTime(new Date()); | |||||
| wxProfitSharingReceiverApplyMapper.updateById(receiverApplyUpd); | |||||
| receiverApply.setSubMchid(receiverApplyUpd.getSubMchid()); | |||||
| receiverApply.setSignUrl(receiverApplyUpd.getSignUrl()); | |||||
| receiverApply.setApplymentState(receiverApplyUpd.getApplymentState()); | |||||
| receiverApply.setApplymentStateDesc(receiverApplyUpd.getApplymentStateDesc()); | |||||
| receiverApply.setAuditDetail(receiverApplyUpd.getAuditDetail()); | |||||
| receiverApply.setUpdateTime(receiverApplyUpd.getUpdateTime()); | |||||
| } | |||||
| return new ResultData(receiverApply); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -178,31 +138,7 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR | |||||
| @Override | @Override | ||||
| public ResultData handVerifyResult(WxProfitSharingReceiverApply receiverApply) { | public ResultData handVerifyResult(WxProfitSharingReceiverApply receiverApply) { | ||||
| if(receiverApply == null || !EnumSharingReceiverVerifyResult.VERIFYING.getCode().equals(receiverApply.getVerifyResult())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该状态无需同步"); | |||||
| } | |||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(receiverApply.getTenantId()); | |||||
| try { | |||||
| SettlementInfoResult settlementInfoResult = wxPayService.getApplyment4SubService().querySettlementBySubMchid(receiverApply.getSubMchid()); | |||||
| EnumSharingReceiverVerifyResult enumVerifyResult = EnumSharingReceiverVerifyResult.getEnum(settlementInfoResult.getVerifyResult()); | |||||
| if(enumVerifyResult != null && !enumVerifyResult.getCode().equals(receiverApply.getVerifyResult())){ | |||||
| WxProfitSharingReceiverApply receiverApplyUpd = new WxProfitSharingReceiverApply(); | |||||
| receiverApplyUpd.updateTenantInfo(receiverApply); | |||||
| receiverApplyUpd.setId(receiverApply.getId()); | |||||
| receiverApplyUpd.setVerifyResult(enumVerifyResult.getCode()); | |||||
| if(enumVerifyResult.equals(EnumSharingReceiverVerifyResult.VERIFY_FAIL)){ | |||||
| receiverApplyUpd.setVerifyFailReason(settlementInfoResult.getVerifyFailReason()); | |||||
| }else{ | |||||
| receiverApplyUpd.setVerifyFailReason(""); | |||||
| } | |||||
| receiverApplyUpd.setUpdateTime(new Date()); | |||||
| wxProfitSharingReceiverApplyMapper.updateById(receiverApplyUpd); | |||||
| } | |||||
| return new ResultData(); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -1096,270 +1032,10 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR | |||||
| } | } | ||||
| private ResultData applyment4subApplyment(WxProfitSharingReceiverApply receiverApply){ | private ResultData applyment4subApplyment(WxProfitSharingReceiverApply receiverApply){ | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(receiverApply.getTenantId()); | |||||
| try { | |||||
| WxPayApplyment4SubCreateRequest request = new WxPayApplyment4SubCreateRequest(); | |||||
| request.setBusinessCode(receiverApply.getOutRequestNo()); | |||||
| WxPayApplyment4SubCreateRequest.SubjectInfo subjectInfo = new WxPayApplyment4SubCreateRequest.SubjectInfo(); | |||||
| EnumSharingReceiverOrganizationType enumOrganizationType = EnumSharingReceiverOrganizationType.getEnum(receiverApply.getOrganizationType()); | |||||
| subjectInfo.setSubjectType(enumOrganizationType.getSubjectTypeEnum()); | |||||
| if(EnumYesOrNo.YES.getCode().equals(receiverApply.getFinanceInstitution())){ | |||||
| //todo 金融机构 | |||||
| // subjectInfo.setFinanceInstitution(true); | |||||
| } | |||||
| if(EnumSharingReceiverOrganizationType.GETI.equals(enumOrganizationType) || EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ | |||||
| JSONObject businessLicenseInfoObject = JSONObject.parseObject(receiverApply.getBusinessLicenseInfo()); | |||||
| WxPayApplyment4SubCreateRequest.SubjectInfo.BusinessLicenseInfo businessLicenseInfo = new WxPayApplyment4SubCreateRequest.SubjectInfo.BusinessLicenseInfo(); | |||||
| JSONObject license_copy_info = businessLicenseInfoObject.getJSONObject("license_copy_info"); | |||||
| businessLicenseInfo.setLicenseCopy(this.getMerchantMediaId(license_copy_info)); | |||||
| businessLicenseInfo.setLicenseNumber(businessLicenseInfoObject.getString("license_number")); | |||||
| businessLicenseInfo.setMerchantName(businessLicenseInfoObject.getString("merchant_name")); | |||||
| businessLicenseInfo.setLegalPerson(businessLicenseInfoObject.getString("legal_person")); | |||||
| businessLicenseInfo.setLicenseAddress(businessLicenseInfoObject.getString("license_address")); | |||||
| businessLicenseInfo.setPeriodBegin(businessLicenseInfoObject.getString("period_begin")); | |||||
| businessLicenseInfo.setPeriodEnd(businessLicenseInfoObject.getString("period_end")); | |||||
| subjectInfo.setBusinessLicenseInfo(businessLicenseInfo); | |||||
| WxPayApplyment4SubCreateRequest.SubjectInfo.IdentityInfo identityInfo = new WxPayApplyment4SubCreateRequest.SubjectInfo.IdentityInfo(); | |||||
| EnumSharingReceiverIdDocType enumIdDocType = EnumSharingReceiverIdDocType.getEnum(receiverApply.getIdDocType()); | |||||
| identityInfo.setIdDocType(enumIdDocType.getIdTypeEnum()); | |||||
| if(EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_IDCARD.equals(enumIdDocType)){ | |||||
| JSONObject idCardInfoObject = JSONObject.parseObject(receiverApply.getIdCardInfo()); | |||||
| WxPayApplyment4SubCreateRequest.SubjectInfo.IdentityInfo.IdCardInfo idCardInfo = new WxPayApplyment4SubCreateRequest.SubjectInfo.IdentityInfo.IdCardInfo(); | |||||
| JSONObject id_card_copy_info = idCardInfoObject.getJSONObject("id_card_copy_info"); | |||||
| idCardInfo.setIdCardCopy(this.getMerchantMediaId(id_card_copy_info)); | |||||
| JSONObject id_card_national_info = idCardInfoObject.getJSONObject("id_card_national_info"); | |||||
| idCardInfo.setIdCardNational(this.getMerchantMediaId(id_card_national_info)); | |||||
| idCardInfo.setIdCardName(idCardInfoObject.getString("id_card_name")); | |||||
| idCardInfo.setIdCardNumber(idCardInfoObject.getString("id_card_number")); | |||||
| idCardInfo.setIdCardAddress(idCardInfoObject.getString("id_card_address")); | |||||
| idCardInfo.setCardPeriodBegin(idCardInfoObject.getString("card_period_begin")); | |||||
| idCardInfo.setCardPeriodEnd(idCardInfoObject.getString("card_period_end")); | |||||
| identityInfo.setIdCardInfo(idCardInfo); | |||||
| }else{ | |||||
| JSONObject idDocInfoObject = JSONObject.parseObject(receiverApply.getIdDocInfo()); | |||||
| WxPayApplyment4SubCreateRequest.SubjectInfo.IdentityInfo.IdDocInfo idDocInfo = new WxPayApplyment4SubCreateRequest.SubjectInfo.IdentityInfo.IdDocInfo(); | |||||
| JSONObject id_doc_copy_info = idDocInfoObject.getJSONObject("id_doc_copy_info"); | |||||
| idDocInfo.setIdDocCopy(this.getMerchantMediaId(id_doc_copy_info)); | |||||
| if(!EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_OVERSEA_PASSPORT.equals(enumIdDocType)){ | |||||
| JSONObject id_doc_copy_back_info = idDocInfoObject.getJSONObject("id_doc_copy_back_info"); | |||||
| idDocInfo.setIdDocCopyBack(this.getMerchantMediaId(id_doc_copy_back_info)); | |||||
| } | |||||
| idDocInfo.setIdDocName(idDocInfoObject.getString("id_doc_name")); | |||||
| idDocInfo.setIdDocNumber(idDocInfoObject.getString("id_doc_number")); | |||||
| idDocInfo.setIdDocAddress(idDocInfoObject.getString("id_doc_address")); | |||||
| idDocInfo.setDocPeriodBegin(idDocInfoObject.getString("doc_period_begin")); | |||||
| idDocInfo.setDocPeriodEnd(idDocInfoObject.getString("doc_period_end")); | |||||
| identityInfo.setIdDocInfo(idDocInfo); | |||||
| } | |||||
| if(EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ | |||||
| if(EnumYesOrNo.YES.getCode().equals(receiverApply.getOwner())){ | |||||
| identityInfo.setOwner(true); | |||||
| }else{ | |||||
| identityInfo.setOwner(false); | |||||
| List<WxPayApplyment4SubCreateRequest.SubjectInfo.UboInfo> uboInfoList = new ArrayList<>(); | |||||
| JSONArray jsonArray = JSONArray.parseArray(receiverApply.getUboInfoList()); | |||||
| for(int i = 0;i < jsonArray.size();i++){ | |||||
| JSONObject uboInfoObject = jsonArray.getJSONObject(i); | |||||
| WxPayApplyment4SubCreateRequest.SubjectInfo.UboInfo uboInfo = new WxPayApplyment4SubCreateRequest.SubjectInfo.UboInfo(); | |||||
| Integer ubo_id_doc_type = uboInfoObject.getInteger("ubo_id_doc_type"); | |||||
| EnumSharingReceiverIdDocType enumUboIdDocType = EnumSharingReceiverIdDocType.getEnum(ubo_id_doc_type); | |||||
| uboInfo.setUboIdDocType(enumUboIdDocType.getIdTypeEnum()); | |||||
| JSONObject ubo_id_doc_copy_info = uboInfoObject.getJSONObject("ubo_id_doc_copy_info"); | |||||
| uboInfo.setUboIdDocCopy(this.getMerchantMediaId(ubo_id_doc_copy_info)); | |||||
| if(!EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_OVERSEA_PASSPORT.equals(enumUboIdDocType)){ | |||||
| JSONObject ubo_id_doc_copy_back_info = uboInfoObject.getJSONObject("ubo_id_doc_copy_back_info"); | |||||
| uboInfo.setUboIdDocCopyBack(this.getMerchantMediaId(ubo_id_doc_copy_back_info)); | |||||
| } | |||||
| uboInfo.setUboIdDocName(uboInfoObject.getString("ubo_id_doc_name")); | |||||
| uboInfo.setUboIdDocNumber(uboInfoObject.getString("ubo_id_doc_number")); | |||||
| uboInfo.setUboIdDocAddress(uboInfoObject.getString("ubo_id_doc_address")); | |||||
| uboInfo.setUboPeriodBegin(uboInfoObject.getString("ubo_period_begin")); | |||||
| uboInfo.setUboPeriodEnd(uboInfoObject.getString("ubo_period_end")); | |||||
| uboInfoList.add(uboInfo); | |||||
| } | |||||
| subjectInfo.setUboInfoList(uboInfoList); | |||||
| } | |||||
| } | |||||
| subjectInfo.setIdentityInfo(identityInfo); | |||||
| } else{ | |||||
| //todo 其他主体 | |||||
| } | |||||
| request.setSubjectInfo(subjectInfo); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo businessInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo(); | |||||
| businessInfo.setMerchantShortname(receiverApply.getMerchantShortname()); | |||||
| businessInfo.setServicePhone(receiverApply.getServicePhone()); | |||||
| JSONObject salesInfoObject = JSONObject.parseObject(receiverApply.getSalesInfo()); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo salesInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo(); | |||||
| JSONArray sales_scenes_type = salesInfoObject.getJSONArray("sales_scenes_type"); | |||||
| List<Integer> salesScenesTypes = sales_scenes_type.toJavaList(Integer.class); | |||||
| List<SalesScenesTypeEnum> salesScenesTypeEnumList = EnumSharingReceiverSalesScenesType.getSalesScenesTypeEnumList(salesScenesTypes); | |||||
| salesInfo.setSalesScenesType(salesScenesTypeEnumList); | |||||
| if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_STORE.getCode())){ | |||||
| JSONObject biz_store_info = salesInfoObject.getJSONObject("biz_store_info"); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.BizStoreInfo bizStoreInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.BizStoreInfo(); | |||||
| bizStoreInfo.setBizStoreName(biz_store_info.getString("biz_store_name")); | |||||
| bizStoreInfo.setBizAddressCode(biz_store_info.getString("biz_address_code")); | |||||
| JSONArray store_entrance_pic = biz_store_info.getJSONArray("store_entrance_pic"); | |||||
| bizStoreInfo.setStoreEntrancePic(this.getMerchantMediaIds(store_entrance_pic)); | |||||
| JSONArray indoor_pic = biz_store_info.getJSONArray("indoor_pic"); | |||||
| bizStoreInfo.setIndoorPic(this.getMerchantMediaIds(indoor_pic)); | |||||
| bizStoreInfo.setBizSubAppid(biz_store_info.getString("biz_sub_appid")); | |||||
| salesInfo.setBizStoreInfo(bizStoreInfo); | |||||
| } | |||||
| if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_MP.getCode())){ | |||||
| JSONObject mp_info = salesInfoObject.getJSONObject("mp_info"); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.MpInfo mpInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.MpInfo(); | |||||
| mpInfo.setMpAppid(mp_info.getString("mp_appid")); | |||||
| mpInfo.setMpSubAppid(mp_info.getString("mp_sub_appid")); | |||||
| JSONArray mp_pics = mp_info.getJSONArray("mp_pics"); | |||||
| mpInfo.setMpPics(this.getMerchantMediaIds(mp_pics)); | |||||
| salesInfo.setMpInfo(mpInfo); | |||||
| } | |||||
| if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_MINI_PROGRAM.getCode())){ | |||||
| JSONObject mini_program_info = salesInfoObject.getJSONObject("mini_program_info"); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.MiniProgramInfo miniProgramInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.MiniProgramInfo(); | |||||
| miniProgramInfo.setMiniProgramAppid(mini_program_info.getString("mini_program_appid")); | |||||
| miniProgramInfo.setMiniProgramSubAppid(mini_program_info.getString("mini_program_sub_appid")); | |||||
| List<String> mediaIds = this.getMerchantMediaIds(mini_program_info.getJSONArray("mini_program_pics")); | |||||
| if(!mediaIds.isEmpty()){ | |||||
| miniProgramInfo.setMiniProgramPics(mediaIds); | |||||
| } | |||||
| salesInfo.setMiniProgramInfo(miniProgramInfo); | |||||
| } | |||||
| if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_WEB.getCode())){ | |||||
| JSONObject web_info = salesInfoObject.getJSONObject("web_info"); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.WebInfo webInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.WebInfo(); | |||||
| webInfo.setDomain(web_info.getString("domain")); | |||||
| JSONObject web_authorisation_info = web_info.getJSONObject("web_authorisation_info"); | |||||
| webInfo.setWebAuthorisation(this.getMerchantMediaId(web_authorisation_info)); | |||||
| webInfo.setWebAppid(web_info.getString("web_appid")); | |||||
| salesInfo.setWebInfo(webInfo); | |||||
| } | |||||
| if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_APP.getCode())){ | |||||
| JSONObject app_info = salesInfoObject.getJSONObject("app_info"); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.AppInfo appInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.AppInfo(); | |||||
| appInfo.setAppAppid(app_info.getString("app_appid")); | |||||
| appInfo.setAppSubAppid(app_info.getString("app_sub_appid")); | |||||
| JSONArray app_pics = app_info.getJSONArray("app_pics"); | |||||
| appInfo.setAppPics(this.getMerchantMediaIds(app_pics)); | |||||
| salesInfo.setAppInfo(appInfo); | |||||
| } | |||||
| if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_WEWORK.getCode())){ | |||||
| JSONObject wework_info = salesInfoObject.getJSONObject("wework_info"); | |||||
| WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.WeworkInfo weworkInfo = new WxPayApplyment4SubCreateRequest.BusinessInfo.SalesInfo.WeworkInfo(); | |||||
| weworkInfo.setSubCorpId(wework_info.getString("sub_corp_id")); | |||||
| JSONArray wework_pics = wework_info.getJSONArray("wework_pics"); | |||||
| weworkInfo.setWeworkPics(this.getMerchantMediaIds(wework_pics)); | |||||
| salesInfo.setWeworkInfo(weworkInfo); | |||||
| } | |||||
| businessInfo.setSalesInfo(salesInfo); | |||||
| request.setBusinessInfo(businessInfo); | |||||
| WxPayApplyment4SubCreateRequest.SettlementInfo settlementInfo = new WxPayApplyment4SubCreateRequest.SettlementInfo(); | |||||
| JSONObject settlementInfoObject = JSONObject.parseObject(receiverApply.getSettlementInfo()); | |||||
| settlementInfo.setSettlementId(settlementInfoObject.getString("settlement_id")); | |||||
| settlementInfo.setQualificationType(settlementInfoObject.getString("qualification_type")); | |||||
| JSONArray qualifications = JSONObject.parseArray(receiverApply.getQualifications()); | |||||
| List<String> mediaIds = this.getMerchantMediaIds(qualifications); | |||||
| if(!mediaIds.isEmpty()){ | |||||
| settlementInfo.setQualifications(mediaIds); | |||||
| } | |||||
| settlementInfo.setActivitiesId(settlementInfoObject.getString("activities_id")); | |||||
| settlementInfo.setActivitiesRate(settlementInfoObject.getString("activities_rate")); | |||||
| JSONArray activities_additions = settlementInfoObject.getJSONArray("activities_additions"); | |||||
| List<String> mediaIds1 = this.getMerchantMediaIds(activities_additions); | |||||
| if(!mediaIds1.isEmpty()){ | |||||
| settlementInfo.setActivitiesAdditions(mediaIds1); | |||||
| } | |||||
| request.setSettlementInfo(settlementInfo); | |||||
| WxPayApplyment4SubCreateRequest.BankAccountInfo bankAccountInfo = new WxPayApplyment4SubCreateRequest.BankAccountInfo(); | |||||
| JSONObject accountInfoObject = JSONObject.parseObject(receiverApply.getAccountInfo()); | |||||
| EnumSharingReceiverAccountType enumAccountType = EnumSharingReceiverAccountType.getEnum(accountInfoObject.getInteger("bank_account_type")); | |||||
| bankAccountInfo.setBankAccountType(enumAccountType.getBankAccountTypeEnum()); | |||||
| bankAccountInfo.setAccountName(accountInfoObject.getString("account_name")); | |||||
| bankAccountInfo.setAccountBank(accountInfoObject.getString("account_bank")); | |||||
| boolean need_bank_branch = accountInfoObject.getBooleanValue("need_bank_branch"); | |||||
| if(need_bank_branch){ | |||||
| bankAccountInfo.setBankBranchId(accountInfoObject.getString("bank_branch_id")); | |||||
| bankAccountInfo.setBankName(accountInfoObject.getString("bank_name")); | |||||
| } | |||||
| bankAccountInfo.setBankAddressCode(accountInfoObject.getString("bank_address_code")); | |||||
| bankAccountInfo.setAccountNumber(accountInfoObject.getString("account_number")); | |||||
| //todo 1. 当主体类型是“政府机关/事业单位”时或所属行业为“党费”时,支持在有合法资金管理关系的情况下结算账户设置为非同名。 | |||||
| //todo 2. 若结算账户设置为非同名,则需填写非同名证明材料,若结算账户为同名,则无需填写。 | |||||
| request.setBankAccountInfo(bankAccountInfo); | |||||
| WxPayApplyment4SubCreateRequest.ContactInfo contactInfo = new WxPayApplyment4SubCreateRequest.ContactInfo(); | |||||
| JSONObject contactInfoObject = JSONObject.parseObject(receiverApply.getContactInfo()); | |||||
| Integer contact_type = contactInfoObject.getInteger("contact_type"); | |||||
| EnumSharingReceiverContactType enumContactType = EnumSharingReceiverContactType.getEnum(contact_type); | |||||
| contactInfo.setContactType(enumContactType.getContactTypeEnum()); | |||||
| contactInfo.setContactName(contactInfoObject.getString("contact_name")); | |||||
| if(EnumSharingReceiverContactType.SUPER.equals(enumContactType)){ | |||||
| Integer contact_id_doc_type = contactInfoObject.getInteger("contact_id_doc_type"); | |||||
| EnumSharingReceiverIdDocType enumIdDocType = EnumSharingReceiverIdDocType.getEnum(contact_id_doc_type); | |||||
| contactInfo.setContactIdDocType(enumIdDocType.getIdTypeEnum()); | |||||
| contactInfo.setContactIdNumber(contactInfoObject.getString("contact_id_number")); | |||||
| JSONObject contact_id_doc_copy_info = contactInfoObject.getJSONObject("contact_id_doc_copy_info"); | |||||
| contactInfo.setContactIdDocCopy(this.getMerchantMediaId(contact_id_doc_copy_info)); | |||||
| if(!EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_OVERSEA_PASSPORT.equals(enumIdDocType)) { | |||||
| JSONObject contact_id_doc_copy_back_info = contactInfoObject.getJSONObject("contact_id_doc_copy_back_info"); | |||||
| contactInfo.setContactIdDocCopyBack(this.getMerchantMediaId(contact_id_doc_copy_back_info)); | |||||
| } | |||||
| contactInfo.setContactPeriodBegin(contactInfoObject.getString("contact_period_begin")); | |||||
| contactInfo.setContactPeriodEnd(contactInfoObject.getString("contact_period_end")); | |||||
| JSONObject business_authorization_letter_info = contactInfoObject.getJSONObject("business_authorization_letter_info"); | |||||
| contactInfo.setBusinessAuthorizationLetter(this.getMerchantMediaId(business_authorization_letter_info)); | |||||
| } | |||||
| contactInfo.setOpenid(contactInfoObject.getString("openid")); | |||||
| contactInfo.setMobilePhone(contactInfoObject.getString("mobile_phone")); | |||||
| contactInfo.setContactEmail(contactInfoObject.getString("contact_email")); | |||||
| request.setContactInfo(contactInfo); | |||||
| WxPayApplyment4SubCreateRequest.AdditionInfo additionInfo = new WxPayApplyment4SubCreateRequest.AdditionInfo(); | |||||
| if(StringUtils.isNotBlank(receiverApply.getAdditionInfo())){ | |||||
| JSONObject additionInfoObject = JSONObject.parseObject(receiverApply.getAdditionInfo()); | |||||
| JSONObject legal_person_commitment_info = additionInfoObject.getJSONObject("legal_person_commitment_info"); | |||||
| additionInfo.setLegalPersonCommitment(this.getMerchantMediaId(legal_person_commitment_info)); | |||||
| JSONObject legal_person_video_info = additionInfoObject.getJSONObject("legal_person_video_info"); | |||||
| additionInfo.setLegalPersonVideo(this.getMerchantMediaId(legal_person_video_info)); | |||||
| } | |||||
| if(StringUtils.isNotBlank(receiverApply.getBusinessAdditionPics())){ | |||||
| JSONArray business_addition_pics = JSONObject.parseArray(receiverApply.getBusinessAdditionPics()); | |||||
| List<String> mediaIds2 = this.getMerchantMediaIds(business_addition_pics); | |||||
| if(!mediaIds2.isEmpty()){ | |||||
| additionInfo.setBusinessAdditionPics(mediaIds2); | |||||
| } | |||||
| } | |||||
| if(StringUtils.isNotBlank(receiverApply.getBusinessAdditionDesc())){ | |||||
| additionInfo.setBusinessAdditionMsg(contactInfoObject.getString("business_addition_msg")); | |||||
| } | |||||
| request.setAdditionInfo(additionInfo); | |||||
| WxPayApplymentCreateResult wxPayApplymentCreateResult = wxPayService.getApplyment4SubService().createApply(request); | |||||
| return new ResultData(wxPayApplymentCreateResult.getApplymentId()); | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | } | ||||
| private boolean modifySettlement(TenantEntity tenantEntity,String subMchid,String accountInfo){ | private boolean modifySettlement(TenantEntity tenantEntity,String subMchid,String accountInfo){ | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantEntity.getTenantId()); | |||||
| try { | |||||
| ModifySettlementRequest request = new ModifySettlementRequest(); | |||||
| JSONObject accountInfoObject = JSONObject.parseObject(accountInfo); | |||||
| EnumSharingReceiverAccountType enumAccountType = EnumSharingReceiverAccountType.getEnum(accountInfoObject.getInteger("bank_account_type")); | |||||
| request.setAccountType(enumAccountType.getAccountTypeEnum()); | |||||
| request.setAccountName(accountInfoObject.getString("account_name")); | |||||
| request.setAccountBank(accountInfoObject.getString("account_bank")); | |||||
| request.setBankAddressCode(accountInfoObject.getString("bank_address_code")); | |||||
| request.setBankBranchId(accountInfoObject.getString("bank_branch_id")); | |||||
| request.setBankName(accountInfoObject.getString("bank_name")); | |||||
| request.setAccountNumber(accountInfoObject.getString("account_number")); | |||||
| String result = wxPayService.getApplyment4SubService().modifySettlement(subMchid, request); | |||||
| return true; | |||||
| } catch (WxPayException e) { | |||||
| e.printStackTrace(); | |||||
| logger.error("修改结算帐号异常"+subMchid); | |||||
| } | |||||
| return false; | return false; | ||||
| } | } | ||||
| @@ -33,8 +33,6 @@ public class WxProjectConfigServiceImpl implements WxProjectConfigService { | |||||
| @Autowired | @Autowired | ||||
| WxMallFloorService wxMallFloorService; | WxMallFloorService wxMallFloorService; | ||||
| @Autowired | @Autowired | ||||
| WxPayAccountService wxPayAccountService; | |||||
| @Autowired | |||||
| WxPayAccountBillService wxPayAccountBillService; | WxPayAccountBillService wxPayAccountBillService; | ||||
| @Autowired | @Autowired | ||||
| WxAppinfoService wxAppinfoService; | WxAppinfoService wxAppinfoService; | ||||
| @@ -195,18 +193,6 @@ public class WxProjectConfigServiceImpl implements WxProjectConfigService { | |||||
| @Override | @Override | ||||
| @Transactional(rollbackFor = {Exception.class}) | @Transactional(rollbackFor = {Exception.class}) | ||||
| public void initPayAccount(WxAppinfo appinfo,WxPayAccount wxPayAccount) { | public void initPayAccount(WxAppinfo appinfo,WxPayAccount wxPayAccount) { | ||||
| if(appinfo.getPayId() != null){ | |||||
| wxPayAccount.setId(appinfo.getPayId()); | |||||
| } | |||||
| wxPayAccountService.saveOrUpdate(wxPayAccount); | |||||
| if(appinfo.getPayId() == null){ | |||||
| WxAppinfo updApp = new WxAppinfo(); | |||||
| updApp.updateTenantInfo(appinfo); | |||||
| updApp.setId(appinfo.getId()); | |||||
| updApp.setPayId(wxPayAccount.getId()); | |||||
| wxAppinfoService.saveOrUpdate(updApp); | |||||
| } | |||||
| } | } | ||||
| @@ -66,8 +66,6 @@ public class TtOrderServiceImpl implements TtOrderService { | |||||
| @Autowired | @Autowired | ||||
| private WxAppinfoService wxAppinfoService; | private WxAppinfoService wxAppinfoService; | ||||
| @Autowired | |||||
| private WxPayAccountService payAccountService; | |||||
| @Override | @Override | ||||
| public PageInfo<TtOrder> listAsPage(TtOrder record, Integer pageIndex, Integer pageSize) { | public PageInfo<TtOrder> listAsPage(TtOrder record, Integer pageIndex, Integer pageSize) { | ||||
| @@ -228,10 +226,6 @@ public class TtOrderServiceImpl implements TtOrderService { | |||||
| if(appInfo == null) { | if(appInfo == null) { | ||||
| return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | ||||
| } | } | ||||
| WxPayAccount payAcount = payAccountService.getById(appInfo.getPayId()); | |||||
| if(payAcount == null){ | |||||
| return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | |||||
| } | |||||
| TtCoupon coupon = ttcouponMapper.selectById(order.getProductId()); | TtCoupon coupon = ttcouponMapper.selectById(order.getProductId()); | ||||
| if (!coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode())) { | if (!coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode())) { | ||||
| logger.error("券已经下架了>>>" + order.getProductId()); | logger.error("券已经下架了>>>" + order.getProductId()); | ||||
| @@ -241,33 +235,7 @@ public class TtOrderServiceImpl implements TtOrderService { | |||||
| if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { | if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { | ||||
| return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); | return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); | ||||
| } | } | ||||
| ResultData resultData = this.updateOrderStatus(orderId, appInfo, payAcount); | |||||
| if(resultData.code == ResultData.SUCCESS){ | |||||
| return new ResultData(ErrorCode.ORDER_HAD_PAY); | |||||
| }else if(resultData.code == ErrorCode.PAY_ORDER_NOT_PAY.getCode() ){ | |||||
| DouYinCreatePreOrder preOrder = new DouYinCreatePreOrder(); | |||||
| preOrder.setAppId(appInfo.getAppId()); | |||||
| preOrder.setSercrect(appInfo.getSecret()); | |||||
| preOrder.setSalt(payAcount.getMerchantApiKey()); | |||||
| preOrder.setOutOrderNo(order.getId().toString()); | |||||
| preOrder.setTotalAmount(order.getPayment()); | |||||
| preOrder.setSubject(coupon.getTitle()); | |||||
| preOrder.setBody(coupon.getTitle()); | |||||
| preOrder.setValidTime(time_out); | |||||
| // preOrder.setNotifyUrl();//回调地址 | |||||
| CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder); | |||||
| // if(preOrderResult.isSuccess()){ | |||||
| // TtOrder orderSuc = new TtOrder(); | |||||
| // orderSuc.setId(order.getId()); | |||||
| // orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode()); | |||||
| // orderSuc.setUpdateDate(new Date()); | |||||
| // ttOrderMapper.updateById(orderSuc); | |||||
| // } | |||||
| return new ResultData(preOrderResult); | |||||
| }else{ | |||||
| return resultData; | |||||
| } | |||||
| return null; | |||||
| } | } | ||||