|
|
@ -1,5 +1,8 @@ |
|
|
package org.jeecg.modules.hotelbalancelog.controller; |
|
|
package org.jeecg.modules.hotelbalancelog.controller; |
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
|
import java.security.cert.X509Certificate; |
|
|
|
|
|
import java.util.ArrayList; |
|
|
import java.util.Arrays; |
|
|
import java.util.Arrays; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
@ -7,12 +10,29 @@ import java.util.stream.Collectors; |
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.io.UnsupportedEncodingException; |
|
|
import java.io.UnsupportedEncodingException; |
|
|
import java.net.URLDecoder; |
|
|
import java.net.URLDecoder; |
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
|
|
|
|
|
import com.wechat.pay.contrib.apache.httpclient.util.RsaCryptoUtil; |
|
|
|
|
|
import org.apache.commons.lang.StringUtils; |
|
|
import org.jeecg.common.api.vo.Result; |
|
|
import org.jeecg.common.api.vo.Result; |
|
|
|
|
|
import org.jeecg.common.exception.JeecgBootException; |
|
|
import org.jeecg.common.system.query.QueryGenerator; |
|
|
import org.jeecg.common.system.query.QueryGenerator; |
|
|
|
|
|
import org.jeecg.common.util.HttpRequestUtil; |
|
|
|
|
|
import org.jeecg.common.util.MoneyUtil; |
|
|
|
|
|
import org.jeecg.common.util.RedisUtil; |
|
|
import org.jeecg.common.util.oConvertUtils; |
|
|
import org.jeecg.common.util.oConvertUtils; |
|
|
|
|
|
import org.jeecg.common.util.pay.WeChatPayConfig2; |
|
|
|
|
|
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; |
|
|
|
|
|
import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; |
|
|
import org.jeecg.modules.hotelbalancelog.entity.HotelBalanceLog; |
|
|
import org.jeecg.modules.hotelbalancelog.entity.HotelBalanceLog; |
|
|
|
|
|
import org.jeecg.modules.hotelbalancelog.req.AuditReq; |
|
|
|
|
|
import org.jeecg.modules.hotelbalancelog.req.TransferBatchesDetailsRequest; |
|
|
|
|
|
import org.jeecg.modules.hotelbalancelog.req.TransferBatchesRequest; |
|
|
|
|
|
import org.jeecg.modules.hotelbalancelog.resp.TransferBatchesResp; |
|
|
import org.jeecg.modules.hotelbalancelog.service.IHotelBalanceLogService; |
|
|
import org.jeecg.modules.hotelbalancelog.service.IHotelBalanceLogService; |
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
@ -20,6 +40,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
|
|
|
|
|
|
import org.jeecg.modules.hotelmemberaccount.entity.HotelMemberAccount; |
|
|
|
|
|
import org.jeecg.modules.hotelmemberaccount.service.IHotelMemberAccountService; |
|
|
import org.jeecgframework.poi.excel.ExcelImportUtil; |
|
|
import org.jeecgframework.poi.excel.ExcelImportUtil; |
|
|
import org.jeecgframework.poi.excel.def.NormalExcelConstants; |
|
|
import org.jeecgframework.poi.excel.def.NormalExcelConstants; |
|
|
import org.jeecgframework.poi.excel.entity.ExportParams; |
|
|
import org.jeecgframework.poi.excel.entity.ExportParams; |
|
|
@ -27,6 +49,8 @@ import org.jeecgframework.poi.excel.entity.ImportParams; |
|
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; |
|
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; |
|
|
import org.jeecg.common.system.base.controller.JeecgController; |
|
|
import org.jeecg.common.system.base.controller.JeecgController; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.web.bind.annotation.*; |
|
|
import org.springframework.web.bind.annotation.*; |
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
import org.springframework.web.multipart.MultipartHttpServletRequest; |
|
|
import org.springframework.web.multipart.MultipartHttpServletRequest; |
|
|
@ -49,7 +73,25 @@ import org.jeecg.common.aspect.annotation.AutoLog; |
|
|
public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, IHotelBalanceLogService> { |
|
|
public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, IHotelBalanceLogService> { |
|
|
@Autowired |
|
|
@Autowired |
|
|
private IHotelBalanceLogService hotelBalanceLogService; |
|
|
private IHotelBalanceLogService hotelBalanceLogService; |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private RedisUtil redisUtil; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private IHanHaiMemberService hanHaiMemberService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private IHotelMemberAccountService hotelMemberAccountService; |
|
|
|
|
|
@Value("${weixin.mpAppId}") |
|
|
|
|
|
private String appId; |
|
|
|
|
|
@Value("${wechat.transferBatchUrl}") |
|
|
|
|
|
private String transferBatchUrl; |
|
|
|
|
|
@Value("${wechat.keyPemPath}") |
|
|
|
|
|
private String pemPath; |
|
|
|
|
|
@Value("${weixin.mchId}") |
|
|
|
|
|
private String mchId; |
|
|
|
|
|
@Value("${weixin.serialNo}") |
|
|
|
|
|
private String wxsSerialNo; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private WeChatPayConfig2 weChatPayConfig2; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 分页列表查询 |
|
|
* 分页列表查询 |
|
|
* |
|
|
* |
|
|
@ -71,7 +113,31 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, |
|
|
IPage<HotelBalanceLog> pageList = hotelBalanceLogService.page(page, queryWrapper); |
|
|
IPage<HotelBalanceLog> pageList = hotelBalanceLogService.page(page, queryWrapper); |
|
|
return Result.OK(pageList); |
|
|
return Result.OK(pageList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 分页列表查询 |
|
|
|
|
|
* |
|
|
|
|
|
* @param hotelBalanceLog |
|
|
|
|
|
* @param pageNo |
|
|
|
|
|
* @param pageSize |
|
|
|
|
|
* @param req |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
//@AutoLog(value = "hotel_balance_log-分页列表查询") |
|
|
|
|
|
@ApiOperation(value="hotel_balance_log-分页列表查询", notes="hotel_balance_log-分页列表查询") |
|
|
|
|
|
@GetMapping(value = "/list2") |
|
|
|
|
|
public Result<IPage<HotelBalanceLog>> queryPageList2(HotelBalanceLog hotelBalanceLog, |
|
|
|
|
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, |
|
|
|
|
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, |
|
|
|
|
|
HttpServletRequest req) { |
|
|
|
|
|
QueryWrapper<HotelBalanceLog> queryWrapper = QueryGenerator.initQueryWrapper(hotelBalanceLog, req.getParameterMap()); |
|
|
|
|
|
queryWrapper.eq("type",1); |
|
|
|
|
|
Page<HotelBalanceLog> page = new Page<HotelBalanceLog>(pageNo, pageSize); |
|
|
|
|
|
IPage<HotelBalanceLog> pageList = hotelBalanceLogService.page(page, queryWrapper); |
|
|
|
|
|
return Result.OK(pageList); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 添加 |
|
|
* 添加 |
|
|
* |
|
|
* |
|
|
@ -85,7 +151,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, |
|
|
hotelBalanceLogService.save(hotelBalanceLog); |
|
|
hotelBalanceLogService.save(hotelBalanceLog); |
|
|
return Result.OK("添加成功!"); |
|
|
return Result.OK("添加成功!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 编辑 |
|
|
* 编辑 |
|
|
* |
|
|
* |
|
|
@ -99,7 +165,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, |
|
|
hotelBalanceLogService.updateById(hotelBalanceLog); |
|
|
hotelBalanceLogService.updateById(hotelBalanceLog); |
|
|
return Result.OK("编辑成功!"); |
|
|
return Result.OK("编辑成功!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 通过id删除 |
|
|
* 通过id删除 |
|
|
* |
|
|
* |
|
|
@ -113,7 +179,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, |
|
|
hotelBalanceLogService.removeById(id); |
|
|
hotelBalanceLogService.removeById(id); |
|
|
return Result.OK("删除成功!"); |
|
|
return Result.OK("删除成功!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 批量删除 |
|
|
* 批量删除 |
|
|
* |
|
|
* |
|
|
@ -127,7 +193,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, |
|
|
this.hotelBalanceLogService.removeByIds(Arrays.asList(ids.split(","))); |
|
|
this.hotelBalanceLogService.removeByIds(Arrays.asList(ids.split(","))); |
|
|
return Result.OK("批量删除成功!"); |
|
|
return Result.OK("批量删除成功!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 通过id查询 |
|
|
* 通过id查询 |
|
|
* |
|
|
* |
|
|
@ -168,4 +234,113 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, |
|
|
return super.importExcel(request, response, HotelBalanceLog.class); |
|
|
return super.importExcel(request, response, HotelBalanceLog.class); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
|
@PostMapping("/audit") |
|
|
|
|
|
public Result<?> audit(@RequestBody AuditReq auditReq){ |
|
|
|
|
|
HotelBalanceLog hotelBalanceLog = hotelBalanceLogService.getById(auditReq.getId()); |
|
|
|
|
|
|
|
|
|
|
|
HotelBalanceLog hotelBalanceLog1 = new HotelBalanceLog(); |
|
|
|
|
|
hotelBalanceLog1.setId(hotelBalanceLog.getId()); |
|
|
|
|
|
hotelBalanceLog1.setStatus(1); |
|
|
|
|
|
if(auditReq.getAudit() == 1){ |
|
|
|
|
|
HotelMemberAccount hotelMemberAccount = hotelMemberAccountService.lambdaQuery() |
|
|
|
|
|
.eq(HotelMemberAccount::getUserId, hotelBalanceLog.getUserId()) |
|
|
|
|
|
.one(); |
|
|
|
|
|
|
|
|
|
|
|
BigDecimal bigDecimal = hotelMemberAccount.getShopBalance().add(hotelBalanceLog.getBalance()); |
|
|
|
|
|
|
|
|
|
|
|
HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount(); |
|
|
|
|
|
hotelMemberAccount1.setId(hotelMemberAccount.getId()); |
|
|
|
|
|
hotelMemberAccount1.setShopBalance(bigDecimal); |
|
|
|
|
|
hotelMemberAccountService.updateById(hotelMemberAccount1); |
|
|
|
|
|
hotelBalanceLog1.setStatus(3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hotelBalanceLogService.updateById(hotelBalanceLog1); |
|
|
|
|
|
|
|
|
|
|
|
return Result.OK(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 提现 |
|
|
|
|
|
* @param |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
@PostMapping("/withdrawal") |
|
|
|
|
|
public Result<?> withdrawal(@RequestBody AuditReq auditReq) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integer n = (Integer) redisUtil.get("WITHDRAWAL:" + auditReq.getId()); |
|
|
|
|
|
if (n != null) { |
|
|
|
|
|
throw new JeecgBootException("请勿重复点击,后果自负!"); |
|
|
|
|
|
} |
|
|
|
|
|
redisUtil.set("WITHDRAWAL:" + auditReq.getId(), 1, 5); |
|
|
|
|
|
|
|
|
|
|
|
HotelBalanceLog hotelBalanceLog = hotelBalanceLogService.getById(auditReq.getId()); |
|
|
|
|
|
|
|
|
|
|
|
HanHaiMember hanHaiMember = hanHaiMemberService.lambdaQuery() |
|
|
|
|
|
.eq(HanHaiMember::getId, hotelBalanceLog.getUserId()) |
|
|
|
|
|
.one(); |
|
|
|
|
|
|
|
|
|
|
|
HotelMemberAccount hotelMemberAccount = hotelMemberAccountService.lambdaQuery() |
|
|
|
|
|
.eq(HotelMemberAccount::getUserId, hanHaiMember.getId()) |
|
|
|
|
|
.one(); |
|
|
|
|
|
|
|
|
|
|
|
//微信-商家转账到零钱 |
|
|
|
|
|
|
|
|
|
|
|
String idStr = "H" + IdWorker.getIdStr(); |
|
|
|
|
|
TransferBatchesRequest transferBatchesRequest = new TransferBatchesRequest(); |
|
|
|
|
|
|
|
|
|
|
|
transferBatchesRequest.setAppid(appId); |
|
|
|
|
|
transferBatchesRequest.setOutBillNo(idStr); |
|
|
|
|
|
transferBatchesRequest.setTransferRemark("商家提现"); |
|
|
|
|
|
transferBatchesRequest.setOpenid(hanHaiMember.getAppletOpenid()); |
|
|
|
|
|
transferBatchesRequest.setTransferSceneId("1000"); |
|
|
|
|
|
String serialNo = null; |
|
|
|
|
|
try { |
|
|
|
|
|
X509Certificate certificate = weChatPayConfig2.getVerifier().getValidCertificate(); |
|
|
|
|
|
serialNo = certificate.getSerialNumber().toString(16).toUpperCase(); |
|
|
|
|
|
String encryptOAEP = RsaCryptoUtil.encryptOAEP(hotelBalanceLog.getName(), certificate); |
|
|
|
|
|
transferBatchesRequest.setUserName(encryptOAEP); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.info("真实姓名加密失败"); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
throw new JeecgBootException("真实姓名加密失败"); |
|
|
|
|
|
} |
|
|
|
|
|
transferBatchesRequest.setTransferAmount(MoneyUtil.Yuan2Fen(hotelBalanceLog.getBalance().doubleValue())); |
|
|
|
|
|
List<TransferBatchesDetailsRequest> transferBatchesDetailsRequests = new ArrayList<>(); |
|
|
|
|
|
TransferBatchesDetailsRequest transferBatchesDetailsRequest = new TransferBatchesDetailsRequest(); |
|
|
|
|
|
transferBatchesDetailsRequest.setInfoType("1000-现金营销"); |
|
|
|
|
|
transferBatchesDetailsRequest.setInfoContent("商品返利"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transferBatchesDetailsRequests.add(transferBatchesDetailsRequest); |
|
|
|
|
|
transferBatchesRequest.setTransferDetailList(transferBatchesDetailsRequests); |
|
|
|
|
|
String jsonString = JSONObject.toJSONString(transferBatchesRequest); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String postTransBatRequest = HttpRequestUtil.postTransBatRequest(transferBatchUrl, jsonString, serialNo, wxsSerialNo, mchId, pemPath); |
|
|
|
|
|
log.error("返回结果1:" + postTransBatRequest); |
|
|
|
|
|
TransferBatchesResp transferBatchesResp = JSON.parseObject(postTransBatRequest, TransferBatchesResp.class); |
|
|
|
|
|
log.error("返回结果2:" + transferBatchesResp); |
|
|
|
|
|
if (transferBatchesResp == null || org.apache.commons.lang3.StringUtils.isBlank(transferBatchesResp.getBatchId())) { |
|
|
|
|
|
throw new JeecgBootException("打款失败"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
HotelBalanceLog hotelBalanceLog1 = new HotelBalanceLog(); |
|
|
|
|
|
hotelBalanceLog1.setId(hotelBalanceLog.getId()); |
|
|
|
|
|
hotelBalanceLog1.setStatus(2); |
|
|
|
|
|
hotelBalanceLog1.setOutBatchNo(transferBatchesResp.getOutBatchNo()); |
|
|
|
|
|
hotelBalanceLog1.setBatchId(transferBatchesResp.getBatchId()); |
|
|
|
|
|
hotelBalanceLogService.updateById(hotelBalanceLog1); |
|
|
|
|
|
|
|
|
|
|
|
return Result.OK(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |