| | |
| | | package com.stylefeng.guns.modular.system.controller.general; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.stylefeng.guns.core.base.controller.BaseController; |
| | | import com.stylefeng.guns.core.common.constant.factory.PageFactory; |
| | |
| | | import com.stylefeng.guns.core.util.ExcelExportUtil; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.*; |
| | | import com.stylefeng.guns.modular.system.model.TDriver; |
| | | import com.stylefeng.guns.modular.system.model.TPubWithdrawal; |
| | | import com.stylefeng.guns.modular.system.model.TSystemNotice; |
| | | import com.stylefeng.guns.modular.system.model.TUser; |
| | | import com.stylefeng.guns.modular.system.service.ITDriverService; |
| | | import com.stylefeng.guns.modular.system.service.ITPubWithdrawalService; |
| | | import com.stylefeng.guns.modular.system.service.ITSystemNoticeService; |
| | | import com.stylefeng.guns.modular.system.util.HttpRequestUtil; |
| | | import com.stylefeng.guns.modular.system.util.PushURL; |
| | | import com.stylefeng.guns.modular.system.service.ITUserService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.*; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 提现列表控制器 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2020-06-09 09:30:59 |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/tPubWithdrawal") |
| | | @RequestMapping("") |
| | | public class TPubWithdrawalController extends BaseController { |
| | | |
| | | private String PREFIX = "/system/tPubWithdrawal/"; |
| | |
| | | @Autowired |
| | | private ITSystemNoticeService tSystemNoticeService; |
| | | |
| | | @Autowired |
| | | private TinggPayoutUtil tinggPayoutUtil; |
| | | |
| | | @Autowired |
| | | private ITUserService userService; |
| | | |
| | | @Autowired |
| | | private ITDriverService driverService; |
| | | |
| | | @Value("${callbackPath}") |
| | | private String callbackPath; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跳转到提现列表首页 |
| | | */ |
| | | @RequestMapping("") |
| | | @RequestMapping("/tPubWithdrawal") |
| | | public String index() { |
| | | return PREFIX + "tPubWithdrawal.html"; |
| | | } |
| | |
| | | /** |
| | | * 跳转到查看详情 |
| | | */ |
| | | @RequestMapping("/lookDetail/{id}/{type}") |
| | | @RequestMapping("/tPubWithdrawal/lookDetail/{id}/{type}") |
| | | public String lookDetail(@PathVariable Integer id, @PathVariable Integer type, Model model) { |
| | | TPubWithdrawal tPubWithdrawal = tPubWithdrawalService.selectById(id); |
| | | String str = ""; |
| | |
| | | * 跳转到立即处理页面 |
| | | * ----------改为批量 |
| | | */ |
| | | @RequestMapping("/tPubWithdrawal_immediately/{tPubWithdrawalIds}") |
| | | @RequestMapping("/tPubWithdrawal/tPubWithdrawal_immediately/{tPubWithdrawalIds}") |
| | | public String tPubWithdrawalUpdate(@PathVariable String tPubWithdrawalIds, Model model) { |
| | | model.addAttribute("tPubWithdrawalIds",tPubWithdrawalIds); |
| | | return PREFIX + "tPubWithdrawal_immediately.html"; |
| | |
| | | /** |
| | | * 获取提现列表列表 |
| | | */ |
| | | @RequestMapping(value = "/list") |
| | | @RequestMapping(value = "/tPubWithdrawal/list") |
| | | @ResponseBody |
| | | public Object list(String insertTime, |
| | | String name, |
| | |
| | | /** |
| | | * 新增提现列表 |
| | | */ |
| | | @RequestMapping(value = "/add") |
| | | @RequestMapping(value = "/tPubWithdrawal/add") |
| | | @ResponseBody |
| | | public Object add(TPubWithdrawal tPubWithdrawal) { |
| | | tPubWithdrawalService.insert(tPubWithdrawal); |
| | |
| | | /** |
| | | * 立即处理操作 |
| | | */ |
| | | @RequestMapping(value = "/immediately") |
| | | @RequestMapping(value = "/tPubWithdrawal/immediately") |
| | | @ResponseBody |
| | | public Object immediately(@RequestParam Integer id,@RequestParam Integer state,@RequestParam String remark) { |
| | | TPubWithdrawal tPubWithdrawal = tPubWithdrawalService.selectById(id); |
| | | if (SinataUtil.isNotEmpty(tPubWithdrawal)){ |
| | | // tPubWithdrawal.setState(state); //调用接口修改状态 |
| | | tPubWithdrawal.setRemark(remark); |
| | | tPubWithdrawal.setHandleTime(new Date()); |
| | | |
| | | Integer stateObj = 1; |
| | | if (2 == state){ //同意提现 |
| | | stateObj = 1; |
| | | }else if (3 == state){ //拒绝提现 |
| | | stateObj = 2; |
| | | String serviceCode = ""; |
| | | String phone = ""; |
| | | Integer language = null; |
| | | if(tPubWithdrawal.getUserType() == 1){ |
| | | TUser tUser = userService.selectById(tPubWithdrawal.getUserId()); |
| | | language = tUser.getLanguage(); |
| | | serviceCode = tUser.getPhoneOperator(); |
| | | phone = tUser.getPhone(); |
| | | }else{ |
| | | TDriver tDriver = driverService.selectById(tPubWithdrawal.getUserId()); |
| | | language = tDriver.getLanguage(); |
| | | serviceCode = tDriver.getPhoneOperator(); |
| | | phone = tDriver.getPhone(); |
| | | } |
| | | if(2 == state){ |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String payerTransactionID = sdf.format(new Date()) + tPubWithdrawal.getId(); |
| | | PayoutResponse payoutResponse = tinggPayoutUtil.sendPayout(serviceCode, phone, payerTransactionID, tPubWithdrawal.getMoney().doubleValue(), callbackPath + "/base/withdrawalCallback", remark); |
| | | AuthStatus authStatus = payoutResponse.getAuthStatus(); |
| | | Results results = payoutResponse.getResults().get(0); |
| | | String statusCode = results.getStatusCode(); |
| | | if(!"131".equals(authStatus.getAuthStatusCode())){ |
| | | return ResultUtil.error(authStatus.getAuthStatusDescription()); |
| | | } |
| | | if(!"139".equals(statusCode)){ |
| | | return ResultUtil.error(results.getStatusDescription()); |
| | | } |
| | | tPubWithdrawal.setSerialNo(results.getBeepTransactionID()); |
| | | tPubWithdrawal.setState(4); |
| | | }else{//回退金额 |
| | | tPubWithdrawal.setHandleTime(new Date()); |
| | | tPubWithdrawal.setState(state); |
| | | if(tPubWithdrawal.getUserType() == 1){ |
| | | TUser tUser = userService.selectById(tPubWithdrawal.getUserId()); |
| | | tUser.setBalance(tUser.getBalance().add(tPubWithdrawal.getMoney())); |
| | | userService.updateById(tUser); |
| | | }else{ |
| | | TDriver tDriver = driverService.selectById(tPubWithdrawal.getUserId()); |
| | | tDriver.setBalance(tDriver.getBalance().add(tPubWithdrawal.getMoney())); |
| | | if(tPubWithdrawal.getType() == 1){//活动提现 |
| | | tDriver.setLaveActivityMoney(new BigDecimal(tDriver.getLaveActivityMoney()).add(tPubWithdrawal.getMoney()).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); |
| | | }else{//业务提现 |
| | | tDriver.setLaveBusinessMoney(new BigDecimal(tDriver.getLaveBusinessMoney()).add(tPubWithdrawal.getMoney()).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); |
| | | } |
| | | driverService.updateById(tDriver); |
| | | } |
| | | } |
| | | tPubWithdrawalService.updateById(tPubWithdrawal); |
| | | |
| | | Map<String,String> map = new HashMap<>(); |
| | | map.put("id", String.valueOf(tPubWithdrawal.getId())); |
| | | map.put("state", String.valueOf(stateObj)); |
| | | String result = HttpRequestUtil.postRequest(PushURL.withdraw_auth_url, map); |
| | | System.out.println("提现审核接口 :【recordId="+tPubWithdrawal.getId().toString()+"】,调用接口:"+result); |
| | | |
| | | //增加系统消息 |
| | | TSystemNotice notice = new TSystemNotice(); |
| | | notice.setType(2); |
| | | notice.setUserType(tPubWithdrawal.getUserType()); |
| | | notice.setContent("提现处理结果:【"+remark+"】。"); |
| | | notice.setContent((language == 1 ? "提现申请反馈" : language == 2 ? "Feedback on withdrawal requests" : "Réponse à la demande de retrait") + ":【" +remark +"】。"); |
| | | notice.setUserId(tPubWithdrawal.getUserId()); |
| | | notice.setInsertTime(new Date()); |
| | | notice.setRead(1); |
| | |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/withdrawalCallback") |
| | | public PayoutCallbackResponse tinggPayoutCallback(@RequestBody PayoutCallbackRequest request){ |
| | | System.err.println("转账回调>>>>" + JSON.toJSONString(request)); |
| | | PayoutCallbackResponse payoutCallbackResponse = new PayoutCallbackResponse(); |
| | | AuthStatus authStatus = new AuthStatus(); |
| | | authStatus.setAuthStatusCode(131); |
| | | authStatus.setAuthStatusDescription("Authentication was successful"); |
| | | payoutCallbackResponse.setAuthStatus(authStatus); |
| | | Results results = new Results(); |
| | | PayoutPacket packet = request.getPayload().getPacket(); |
| | | String statusCode = packet.getStatusCode(); |
| | | String beepTransactionID = packet.getBeepTransactionID(); |
| | | String payerTransactionID = packet.getPayerTransactionID(); |
| | | |
| | | String id = payerTransactionID.substring(17); |
| | | TPubWithdrawal tPubWithdrawal = tPubWithdrawalService.selectById(id); |
| | | tPubWithdrawal.setState(2); |
| | | tPubWithdrawal.setHandleTime(new Date()); |
| | | tPubWithdrawal.setSerialNo(beepTransactionID); |
| | | tPubWithdrawalService.updateById(tPubWithdrawal); |
| | | |
| | | results.setBeepTransactionID(beepTransactionID); |
| | | results.setPayerTransactionID(payerTransactionID); |
| | | results.setStatusCode("188"); |
| | | results.setStatusDescription("Response was received"); |
| | | payoutCallbackResponse.setResults(results); |
| | | return payoutCallbackResponse; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 修改提现列表 |
| | | */ |
| | | @RequestMapping(value = "/update") |
| | | @RequestMapping(value = "/tPubWithdrawal/update") |
| | | @ResponseBody |
| | | public Object update(TPubWithdrawal tPubWithdrawal) { |
| | | tPubWithdrawalService.updateById(tPubWithdrawal); |
| | |
| | | /** |
| | | * 提现列表详情 |
| | | */ |
| | | @RequestMapping(value = "/detail/{tPubWithdrawalId}") |
| | | @RequestMapping(value = "/tPubWithdrawal/detail/{tPubWithdrawalId}") |
| | | @ResponseBody |
| | | public Object detail(@PathVariable("tPubWithdrawalId") Integer tPubWithdrawalId) { |
| | | return tPubWithdrawalService.selectById(tPubWithdrawalId); |
| | |
| | | * @param type |
| | | * @param state |
| | | */ |
| | | @RequestMapping(value = "/downloadList",method = RequestMethod.GET) |
| | | @RequestMapping(value = "/tPubWithdrawal/downloadList",method = RequestMethod.GET) |
| | | public void downloadList(String insertTime, String name, Integer withdrawalType, Integer userType, Integer type, Integer state, |
| | | HttpServletRequest request, HttpServletResponse response){ |
| | | String start = null; |
| | |
| | | List<String> shellList = new ArrayList<String>(); |
| | | shellList.add("申请时间"); |
| | | shellList.add("提现人"); |
| | | shellList.add("银行卡号"); |
| | | shellList.add("开户行"); |
| | | shellList.add("提现方式"); |
| | | shellList.add("提现手机号"); |
| | | shellList.add("账户类型"); |
| | | shellList.add("提现金额"); |
| | | shellList.add("提现类型"); |
| | | shellList.add("账户余额"); |
| | | shellList.add("提现金额"); |
| | | shellList.add("联系人"); |
| | | shellList.add("联系电话"); |
| | | shellList.add("备注"); |
| | |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("bankName"))){ |
| | | shellList.add(map.get("bankName").toString()); |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | //withdrawalType |
| | | if(SinataUtil.isNotEmpty(map.get("withdrawalType"))){ |
| | | switch (map.get("withdrawalType").toString()){ |
| | | case "1": |
| | | shellList.add("银行卡"); |
| | | break; |
| | | case "2": |
| | | shellList.add("线下"); |
| | | break; |
| | | default: |
| | | shellList.add("-"); |
| | | } |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | //userType |
| | | if(SinataUtil.isNotEmpty(map.get("userType"))){ |
| | | switch (map.get("userType").toString()){ |
| | |
| | | default: |
| | | shellList.add("-"); |
| | | } |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | //money |
| | | if(SinataUtil.isNotEmpty(map.get("money"))){ |
| | | shellList.add(map.get("money").toString()); |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | |
| | | //balance |
| | | if(SinataUtil.isNotEmpty(map.get("balance"))){ |
| | | shellList.add(map.get("balance").toString()); |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | //money |
| | | if(SinataUtil.isNotEmpty(map.get("money"))){ |
| | | shellList.add(map.get("money").toString()); |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |