| | |
| | | import com.ruoyi.chargingPile.api.model.Site; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.other.api.domain.IntegralPay; |
| | | import com.ruoyi.other.api.domain.IntegralRecord; |
| | | import com.ruoyi.other.api.domain.ServicePay; |
| | | import com.ruoyi.other.api.domain.TIntegralRule; |
| | | import com.ruoyi.other.api.dto.NativePayDTO; |
| | | import com.ruoyi.other.query.IntegralListQuery; |
| | | import com.ruoyi.other.service.TIntegralPayService; |
| | | import com.ruoyi.other.service.TIntegralRecordService; |
| | | import com.ruoyi.other.service.TIntegralRuleService; |
| | | import com.ruoyi.other.service.TServicePayService; |
| | | import com.ruoyi.other.util.MyQrCodeUtil; |
| | | import com.ruoyi.other.util.ObsUploadUtil; |
| | | import com.ruoyi.other.util.QRCodeUtil; |
| | | import com.ruoyi.other.util.UUIDUtil; |
| | | import com.ruoyi.other.util.*; |
| | | import com.ruoyi.other.util.pay.CreateLinkStringByGet1; |
| | | import com.ruoyi.other.util.pay.HttpRequester; |
| | | import com.ruoyi.other.util.pay.HttpRespons; |
| | |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.feignClient.SysConfigClient; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import com.ruoyi.system.api.model.LoginUser; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.core.io.ByteArrayResource; |
| | | import org.springframework.http.*; |
| | | import org.springframework.mock.web.MockMultipartFile; |
| | | import org.springframework.util.LinkedMultiValueMap; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | import java.net.URL; |
| | | import java.security.KeyFactory; |
| | | import java.security.PrivateKey; |
| | | import java.security.SecureRandom; |
| | | import java.security.Signature; |
| | | import java.security.spec.PKCS8EncodedKeySpec; |
| | | import java.text.SimpleDateFormat; |
| | |
| | | @Autowired |
| | | private SysConfigClient sysConfigClient; |
| | | |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private WxAppletTools wxAppletTools; |
| | | |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | @Autowired |
| | | private TokenService tokenService; |
| | | @Autowired |
| | |
| | | ServicePay one = servicePayService.lambdaQuery().eq(ServicePay::getPayStatus, 2) |
| | | .eq(ServicePay::getUserId, userid).orderByDesc(ServicePay::getCreateTime) |
| | | .last("limit 1").one(); |
| | | if (one!=null){ |
| | | ServicePay servicePayBefore = servicePayService.lambdaQuery() |
| | | .eq(ServicePay::getUserId, userid) |
| | | .eq(ServicePay::getPayStatus,2) |
| | | .eq(ServicePay::getDelFlag,0) |
| | | .orderByDesc(ServicePay::getCreateTime) |
| | | .last("limit 1") |
| | | .one(); |
| | | if (servicePayBefore==null){ |
| | | workPlatformVO.setServiceStatus(1); |
| | | workPlatformVO.setEndTime(one.getEndTime()); |
| | | } else if (servicePayBefore.getEndTime().isBefore(LocalDateTime.now())) { |
| | | workPlatformVO.setServiceStatus(2); |
| | | workPlatformVO.setEndTime(servicePayBefore.getEndTime()); |
| | | |
| | | }else{ |
| | | workPlatformVO.setServiceStatus(0); |
| | | workPlatformVO.setEndTime(null); |
| | | workPlatformVO.setServiceStatus(3); |
| | | workPlatformVO.setEndTime(servicePayBefore.getEndTime()); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | return R.ok(workPlatformVO); |
| | |
| | | integralVO.setIntegral(integral); |
| | | return R.ok(integralVO); |
| | | } |
| | | |
| | | @ApiOperation(tags = {"2.0-积分钱包"}, value = "获取积分充值比例") |
| | | @PostMapping(value = "/getPointPercent") |
| | | public R getPointPercent() { |
| | | SysConfig data1 = sysConfigClient.getInfo(8L).getData(); |
| | | return R.ok(data1.getConfigValue()); |
| | | } |
| | | @ApiOperation(tags = {"2.0-积分钱包"}, value = "查询支付结果 true成功 false失败") |
| | | @PostMapping(value = "/queryPayStatus") |
| | | public R buy(@RequestParam Integer id) { |
| | |
| | | return R.ok(false); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(tags = {"2.0-积分钱包"}, value = "获取小程序二维码") |
| | | @PostMapping(value = "/getQrCode") |
| | | public R getQrCode(@RequestParam("amount") String amount ) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | SysUser data = sysUserClient.getSysUser(loginUser.getUserid()).getData(); |
| | | // 充值手机号 |
| | | String phonenumber = data.getPhonenumber(); |
| | | InputStream inputStream = null; |
| | | OutputStream outputStream = null; |
| | | String accessToken = wxAppletTools.getAccessToken(); |
| | | try { |
| | | String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("scene", "phone=" + phonenumber+",amount="+amount); |
| | | param.put("page", "chargingPile/payMent/payMent"); |
| | | param.put("check_path", false); |
| | | param.put("env_version", "trial"); |
| | | param.put("width", 200); //二维码尺寸 |
| | | param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效 |
| | | param.put("auto_color", true); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效 |
| | | Map<String, Object> line_color = new HashMap<>(); |
| | | line_color.put("r", 0); |
| | | line_color.put("g", 0); |
| | | line_color.put("b", 0); |
| | | param.put("line_color", line_color); |
| | | System.err.println("调用生成微信URL接口传参:" + param); |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON); |
| | | HttpEntity requestEntity = new HttpEntity(param, headers); |
| | | ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class); |
| | | System.err.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody()); |
| | | byte[] result = entity.getBody(); |
| | | inputStream = new ByteArrayInputStream(result); |
| | | //拿到httpResponse后,在获取里面的图片 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
| | | // 最后上传生成的文件名 |
| | | String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; |
| | | // oss中的文件夹名 |
| | | String objectName = sdf.format(new Date()) + "/" + finalFileName; |
| | | // 上传oss |
| | | String s = ObsUploadUtil.obsUpload(objectName, inputStream); |
| | | return R.ok(s); |
| | | }catch (Exception e){ |
| | | return R.fail(e.getMessage()); |
| | | } |
| | | } |
| | | @Resource |
| | | private WeChatUtil weChatUtil; |
| | | @PostMapping("/nativePay") |
| | | @ApiOperation(tags = {"2.0-积分钱包"}, value = "获取支付二维码") |
| | | public R nativePay(@RequestParam("amount") String amount) throws Exception { |
| | | BigDecimal bigDecimal = new BigDecimal(amount); |
| | | BigDecimal money = bigDecimal.setScale(2, RoundingMode.HALF_UP); |
| | | Long userid = tokenService.getLoginUser().getUserid(); |
| | | R<SysUser> sysUser = sysUserClient.getSysUser(userid); |
| | | SysUser data = sysUser.getData(); |
| | | public R nativePay(@RequestBody @Validated NativePayDTO dto) throws Exception { |
| | | |
| | | R<SysUser> sysUserR = sysUserClient.queryUserByPhone(dto.getPhone()); |
| | | SysUser data = sysUserR.getData(); |
| | | //使用jscode获取微信openid |
| | | Map<String, Object> map = weChatUtil.code2Session(dto.getJsCode()); |
| | | Integer errcode = Integer.valueOf(map.get("errcode").toString()); |
| | | if(0 != errcode){ |
| | | return R.fail(map.get("msg").toString()); |
| | | } |
| | | String openid = map.get("openid").toString(); |
| | | data.setOpenId(openid); |
| | | BigDecimal amount = dto.getAmount(); |
| | | BigDecimal money = amount.setScale(2, RoundingMode.HALF_UP); |
| | | |
| | | List<Site> sites = siteClient.getSiteAll().getData(); |
| | | Site site = sites.stream().filter(e -> e.getId().equals(data.getSiteId())).findFirst().orElse(null); |
| | | if (site==null){ |
| | |
| | | } |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); |
| | | ServicePay servicePay = new ServicePay(); |
| | | servicePay.setUserId(data.getUserId()); |
| | | servicePay.setAmount(site.getAnnualServiceFee()); |
| | | servicePay.setCode(code); |
| | | servicePay.setPayStatus(1); |
| | | servicePay.setPayType(1); |
| | | servicePay.setDelFlag(0); |
| | | servicePay.setCreateTime(LocalDateTime.now()); |
| | | servicePayService.save(servicePay); |
| | | IntegralPay integralPay = new IntegralPay(); |
| | | integralPay.setUserId(data.getUserId()); |
| | | SysConfig data1 = sysConfigClient.getInfo(8L).getData(); |
| | | BigDecimal bigDecimal = amount.multiply(new BigDecimal(data1.getConfigValue())).setScale(2, RoundingMode.HALF_DOWN); |
| | | integralPay.setIntegralCount(bigDecimal.intValue()); |
| | | integralPay.setAmount(amount); |
| | | integralPay.setCode(code); |
| | | integralPay.setPayStatus(1); |
| | | integralPay.setDelFlag(0); |
| | | integralPay.setCreateTime(LocalDateTime.now()); |
| | | |
| | | |
| | | integralPayService.save(integralPay); |
| | | |
| | | |
| | | // return wechatPayService.unifiedOrderApplet(servicePay.getId()+"",code, site.getAnnualServiceFee()+"", "服务费缴纳",data.getOpenId(), "/other/wx/serviceCallback"); |
| | |
| | | } |
| | | |
| | | System.out.println("接收返回参数:" + response.toString()); |
| | | sysUserClient.updateSysUser(data); |
| | | return R.ok(response.toString()); |
| | | } |
| | | @Autowired |
| | |
| | | } |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); |
| | | ServicePay servicePay = new ServicePay(); |
| | | servicePay.setUserId(data.getUserId()); |
| | | servicePay.setAmount(site.getAnnualServiceFee()); |
| | | servicePay.setCode(code); |
| | | servicePay.setPayStatus(1); |
| | | servicePay.setPayType(1); |
| | | servicePay.setDelFlag(0); |
| | | servicePay.setCreateTime(LocalDateTime.now()); |
| | | servicePayService.save(servicePay); |
| | | IntegralPay integralPay = new IntegralPay(); |
| | | integralPay.setUserId(data.getUserId()); |
| | | SysConfig data1 = sysConfigClient.getInfo(8L).getData(); |
| | | BigDecimal bigDecimal = amount.multiply(new BigDecimal(data1.getConfigValue())).setScale(2, RoundingMode.HALF_DOWN); |
| | | integralPay.setIntegralCount(bigDecimal.intValue()); |
| | | integralPay.setAmount(amount); |
| | | integralPay.setCode(code); |
| | | integralPay.setPayStatus(1); |
| | | integralPay.setDelFlag(0); |
| | | integralPay.setCreateTime(LocalDateTime.now()); |
| | | |
| | | |
| | | integralPayService.save(integralPay); |
| | | |
| | | |
| | | // return wechatPayService.unifiedOrderApplet(servicePay.getId()+"",code, site.getAnnualServiceFee()+"", "服务费缴纳",data.getOpenId(), "/other/wx/serviceCallback"); |
| | |
| | | |
| | | String signStr = JSON.toJSONString(JSONObject.parseObject(JSON.toJSONString(dataMap), TreeMap.class)); |
| | | |
| | | |
| | | System.out.println("待签名字符串:" + signStr); |
| | | |
| | | // 签名 (按照汇付天下规则,使用MD5加签) |
| | |
| | | Long userid = tokenService.getLoginUser().getUserid(); |
| | | SysUser data = sysUserClient.getSysUser(userid).getData(); |
| | | |
| | | if (data != null && data.getSiteId() != null) { |
| | | if (data != null ) { |
| | | if (data.getRoleType() == 1) { |
| | | // 平台 |
| | | SysConfig data1 = sysConfigClient.getInfo(8L).getData(); |
| | | sysConfigClient.update(data1); |
| | | TIntegralRule tIntegralRule = new TIntegralRule(); |
| | | tIntegralRule.setChargeCredit(data1.getConfigValue()); |
| | | tIntegralRule.setChargeCredit("{\"num1\":"+data1.getConfigValue()+"}"); |
| | | tIntegralRule.setContent(data1.getRemark()); |
| | | tIntegralRule.setSiteId(0); |
| | | return R.ok(tIntegralRule); |
| | |
| | | |
| | | if (data.getRoleType() == 1) { |
| | | SysConfig data1 = sysConfigClient.getInfo(8L).getData(); |
| | | data1.setConfigValue(dto.getChargeCredit()); |
| | | JSONObject jsonObject = JSONObject.parseObject(dto.getChargeCredit()); |
| | | Integer num1 = jsonObject.getInteger("num1"); |
| | | data1.setConfigValue(num1.toString()); |
| | | data1.setRemark(dto.getContent()); |
| | | sysConfigClient.update(data1); |
| | | } else { |