|  |  |  | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.ICommonService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.*; | 
|---|
|  |  |  | import cc.mrbird.febs.pay.model.BrandWCPayRequestData; | 
|---|
|  |  |  | import cc.mrbird.febs.pay.service.IXcxPayService; | 
|---|
|  |  |  | import cn.hutool.core.bean.BeanUtil; | 
|---|
|  |  |  | import cn.hutool.core.collection.CollUtil; | 
|---|
|  |  |  | import cn.hutool.core.util.IdUtil; | 
|---|
|  |  |  | 
|---|
|  |  |  | import cn.hutool.crypto.SecureUtil; | 
|---|
|  |  |  | import cn.hutool.crypto.asymmetric.KeyType; | 
|---|
|  |  |  | import cn.hutool.crypto.asymmetric.RSA; | 
|---|
|  |  |  | import cn.hutool.json.JSONUtil; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
|---|
|  |  |  | 
|---|
|  |  |  | MallMember mallMember = this.baseMapper.selectById(id); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMemberVo mallMemberVo = MallMemberConversion.INSTANCE.entityToVo(mallMember); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); | 
|---|
|  |  |  | if (referMember != null) { | 
|---|
|  |  |  | mallMemberVo.setReferrerName(referMember.getName()); | 
|---|
|  |  |  | if(StrUtil.isNotEmpty(mallMember.getReferrerId())){ | 
|---|
|  |  |  | MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); | 
|---|
|  |  |  | if (referMember != null) { | 
|---|
|  |  |  | mallMemberVo.setReferrerName(referMember.getName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (StrUtil.isNotBlank(mallMember.getTradePassword())) { | 
|---|
|  |  |  | 
|---|
|  |  |  | mallMemberVo.setHasPayment(1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL, mallMember.getLevel()); | 
|---|
|  |  |  | //        if (dic != null) { | 
|---|
|  |  |  | //            mallMemberVo.setLevelName(dic.getDescription()); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); | 
|---|
|  |  |  | mallMemberVo.setBalance(wallet.getBalance()); | 
|---|
|  |  |  | mallMemberVo.setScore(wallet.getScore()); | 
|---|
|  |  |  | 
|---|
|  |  |  | public BigDecimal canMoney() { | 
|---|
|  |  |  | Long memberId = LoginUserUtil.getLoginUser().getId(); | 
|---|
|  |  |  | MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); | 
|---|
|  |  |  | BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal canMoney = wallet.getCommission(); | 
|---|
|  |  |  | if (profit != null) { | 
|---|
|  |  |  | if(canMoney.compareTo(BigDecimal.ZERO) > 0) { | 
|---|
|  |  |  | canMoney = canMoney.subtract(profit); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return canMoney; | 
|---|
|  |  |  | return wallet.getBalance().setScale(2,BigDecimal.ROUND_DOWN); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | authInfo.put("token", token); | 
|---|
|  |  |  | authInfo.put("member", mallMember); | 
|---|
|  |  |  | authInfo.put("rasToken", generateAsaToken(token)); | 
|---|
|  |  |  | return new FebsResponse().success().message("登陆成功"); | 
|---|
|  |  |  | return new FebsResponse().success().data(authInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new FebsResponse().fail().message("验证码错误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DataDictionaryCustom rangeSize = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode()); | 
|---|
|  |  |  | if(ObjectUtil.isEmpty(rangeSize)){ | 
|---|
|  |  |  | return new FebsResponse().fail().message("系统繁忙"); | 
|---|
|  |  |  | return new FebsResponse().success().data(2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StrUtil.isBlank(rangeSize.getValue())){ | 
|---|
|  |  |  | return new FebsResponse().fail().message("系统繁忙"); | 
|---|
|  |  |  | return new FebsResponse().success().data(2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //方位大小,换成单位:米 | 
|---|
|  |  |  | Integer value = Integer.parseInt(rangeSize.getValue()) * 1000; | 
|---|
|  |  |  | //根据经纬度获取周围团长的距离 | 
|---|
|  |  |  | MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByLonAndLat(longitude, latitude); | 
|---|
|  |  |  | if(ObjectUtil.isEmpty(mallTeamLeader)){ | 
|---|
|  |  |  | return new FebsResponse().success().data(2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Double distance = mallTeamLeader.getDistance(); | 
|---|
|  |  |  | if(value <= distance){ | 
|---|
|  |  |  | return new FebsResponse().fail().message("系统繁忙"); | 
|---|
|  |  |  | return new FebsResponse().success().data(2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new FebsResponse().success(); | 
|---|
|  |  |  | return new FebsResponse().success().data(1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final IXcxPayService iXcxPayService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public FebsResponse rechargeWallet(ApiRechargeWalletDto apiRechargeWalletDto) { | 
|---|
|  |  |  | Long memberId = LoginUserUtil.getLoginUser().getId(); | 
|---|
|  |  |  | BigDecimal amount = apiRechargeWalletDto.getAmount(); | 
|---|
|  |  |  | if(BigDecimal.ZERO.compareTo(amount)>0){ | 
|---|
|  |  |  | return new FebsResponse().fail().message("请输入正确的充值金额"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | apiRechargeWalletDto.setMemberId(memberId); | 
|---|
|  |  |  | BrandWCPayRequestData brandWCPayRequestData = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | brandWCPayRequestData = iXcxPayService.startRechargeWallet(apiRechargeWalletDto); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | throw new FebsException("支付失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData); | 
|---|
|  |  |  | String payResultStr = brandWCPayRequestData.getPrepay_id(); | 
|---|
|  |  |  | Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("orderInfo", payResultStr); | 
|---|
|  |  |  | map.put("wxResultStr", wxResultStr); | 
|---|
|  |  |  | return new FebsResponse().success().data(map).message("充值即将到账"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private  String getXcxLoginUrl(String code) { | 
|---|