package com.ibeetl.admin.console.web; import com.ibeetl.admin.console.model.MoneyModel; import com.ibeetl.admin.console.model.UserAccountModel; import com.ibeetl.admin.console.model.UserModel; import com.ibeetl.admin.console.service.CuserConsoleService; import com.ibeetl.admin.console.service.MoneyConsoleService; import com.ibeetl.admin.console.service.OrderManageService; import com.ibeetl.admin.console.service.PayConsoleService; import com.ibeetl.admin.console.util.UserLock; import com.ibeetl.admin.core.util.payutil.WxUtil; import com.ibeetl.admin.core.web.JsonResult; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; @Controller @Slf4j public class PayConsoleController { @Autowired PayConsoleService payConsoleService; @Autowired CuserConsoleService cuserConsoleService; @Autowired MoneyConsoleService moneyConsoleService; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 微信小程序现金红包支付 * @param payOrderId 支付订单号 * @return * */ @PostMapping("/wxxcxpay") @ResponseBody @UserLock JsonResult wxXcxPay(String userId, String payOrderId){ if(StringUtils.isEmpty(payOrderId)){ return JsonResult.failMessage("payOrderId不能为空"); } MoneyModel moneyModel = new MoneyModel(); moneyModel.setPayOrderId(payOrderId); moneyModel = moneyConsoleService.queryMoney(moneyModel); if(moneyModel == null){ return JsonResult.failMessage("未查询到此订单号"); } moneyModel.setStatus("3"); moneyModel.setPayFlag("3"); moneyModel.setExamineTime(sdf.format(new Date())); if(!moneyModel.getCreateUserId().equals(userId)){ moneyModel.setUnpassReason("userId和支付订单里面的userId不一致"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("userId和支付订单里面的userId不一致"); } if(StringUtils.isEmpty(moneyModel.getCreateUserId())){ moneyModel.setUnpassReason("用户ID不能为空"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("用户ID不能为空"); } if(StringUtils.isEmpty(moneyModel.getMoney())){ moneyModel.setUnpassReason("金钱不能为空"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("金钱不能为空"); } if(Double.parseDouble(moneyModel.getMoney()) <= 1){ moneyModel.setUnpassReason("金额不能等于或小于1"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("金额不能等于或小于1"); } // 查询用户信息 UserModel userModel = cuserConsoleService.queryUserById(moneyModel.getCreateUserId()); if(userModel == null){ moneyModel.setUnpassReason("用户不存在"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("用户不存在"); } if(userModel.getDelFlag().equals("1")){ moneyModel.setUnpassReason("此用户已经删除"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("此用户已经删除"); } // 查询用户账号表 UserAccountModel userAccountModel = cuserConsoleService.queryAccountInfo(userModel.getUserId(), userModel.getMobilePhone()); if(userAccountModel == null){ moneyModel.setUnpassReason("此用户未查询到账户信息"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("此用户未查询到账户信息"); } if(userAccountModel.getDelFlag().equals("1")){ moneyModel.setUnpassReason("账户信息已删除"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("账户信息已删除"); } if(userAccountModel.getWithdrawMoney() == 0){ moneyModel.setUnpassReason("可体现金额为0"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("可体现金额为0"); } if(userAccountModel.getWithdrawMoney() < Double.parseDouble(moneyModel.getMoney())){ moneyModel.setUnpassReason("可体现金额不足"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("可体现金额不足"); } if(!userModel.getOpenId().equals(moneyModel.getOpenId())){ moneyModel.setUnpassReason("用户和支付的openId不一致"); moneyConsoleService.updateMoney(moneyModel); return JsonResult.failMessage("用户和支付的openId不一致"); } // 审核通过 moneyModel.setStatus("2"); moneyModel.setPayFlag("0"); moneyConsoleService.updateMoney(moneyModel); Map m = new HashMap<>(); // 用户openId m.put("reOpenid", userModel.getOpenId()); // 红包金额 m.put("totalAmount", moneyModel.getMoney()); // 用户ID m.put("userId", userModel.getUserId()); // 账号ID m.put("accountId", userAccountModel.getAccountId()); // 当前账号余额 m.put("accountBeforeMoney", String.valueOf(userAccountModel.getMoney())); // 当前可体现金额 m.put("withdrawBeforeMoney", String.valueOf(userAccountModel.getWithdrawMoney())); m.put("payOrderId", moneyModel.getOrderId()); return payConsoleService.wxXcxPay(m, moneyModel.getWxpayFlag()); } }