123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- package com.szwl.controller;
- import cn.com.crbank.ommo.bean.ResultMessage;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.szwl.feign.bean.PayFeign;
- import com.szwl.model.bo.JoinpayConstant;
- import com.szwl.model.bo.R;
- import com.szwl.model.bo.ResponseModel;
- import com.szwl.model.entity.*;
- import com.szwl.model.utils.Constant;
- import com.szwl.service.*;
- import com.szwl.service.es.EsTOrderService;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.*;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.util.Date;
- import java.util.List;
- /**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author wuhs
- * @since 2022-04-23
- */
- @RestController
- @RequestMapping("/tOrder")
- public class TOrderController {
- @Autowired
- TAdminService tAdminService;
- @Autowired
- TEquipmentService tEquipmentService;
- @Autowired
- TOrderService orderService;
- @Autowired
- PayFeign payFeign;
- @Autowired
- TShandeMchService tShandeMchService;
- @Autowired
- EsTOrderService esTOrderService;
- @Autowired
- TPriceService priceService;
- @Autowired
- TJoinpayMchService joinpayMchService;
- /**
- * 退款
- * @param
- * @return
- */
- @PostMapping("/refund")
- public ResponseEntity<?> refund(@RequestBody TOrder torder) {
- TOrder order = R.getDataIfSuccess(payFeign.getOrder(String.valueOf(torder.getId())));
- TEquipment equipment = tEquipmentService.getById(order.getEquipmentId());
- Long equipmentId = equipment.getId();
- if (order.getProductName().equals("280充值")) {
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(false)
- .setData("订单不退款")
- .setMessage("订单不退款"));
- }
- if (order.getStatus().equals("0")) {
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(false)
- .setData("订单非支付状态")
- .setMessage("订单非支付状态"));
- }
- // TAdmin admin = tAdminService.selectEntityById(order.getAdminId());
- // if(admin.getIsRefund()!=null&&admin.getIsRefund().equals("0")){
- //// return JsonMessage.error("机器设定不退款");
- // }
- String notifyUrl = JoinpayConstant.Notify_Refund_Url;
- JSONArray altInfoArray = JSONArray.parseArray(order.getAltInfo());
- JSONArray altRefInfo = new JSONArray();
- BigDecimal price = BigDecimal.ZERO;
- for (int i = 0; i < altInfoArray.size(); i++) {
- JSONObject altInfoObject = altInfoArray.getJSONObject(i);
- JSONObject refInfo = new JSONObject();
- refInfo.put("altMchNo", altInfoObject.getString("altMchNo"));
- refInfo.put("altRefAmount", altInfoObject.getString("altAmount"));
- price = price.add(altInfoObject.getBigDecimal("altAmount"));
- if (!altInfoObject.getBigDecimal("altAmount").toString().equals("0.00")) {
- altRefInfo.add(refInfo);
- }
- }
- // 特殊处理下:添加多一个平台方分销的金额
- // 平台获得的收益
- BigDecimal adminPrice = new BigDecimal(order.getPrice().toString()).subtract(price);
- JSONObject refInfo = new JSONObject();
- refInfo.put("altMchNo", JoinpayConstant.mch_no);
- refInfo.put("altRefAmount", adminPrice.toString());
- price = price.add(adminPrice);
- if (!adminPrice.toString().toString().equals("0.00")) {
- altRefInfo.add(refInfo);
- }
- String text = "";
- //需要知道订单是哪一个平台的,不能以账号的为标准 0或null为汇聚,1为杉德支付
- String payPlatform = order.getPayPlatform();
- if (StringUtils.isNotEmpty(payPlatform) && payPlatform.equals("1")) {
- try {
- String refund = tShandeMchService.refund(order.getId(), orderService.initRefundSn(equipmentId).toString(), price, "", altRefInfo.toString());
- com.gexin.fastjson.JSONObject jsonObject = com.gexin.fastjson.JSON.parseObject(refund);
- String sub_code = jsonObject.getString("sub_code");
- //订单号
- if (StringUtils.isNotEmpty(sub_code)&&sub_code.equals("REFUND_SUCCESS")) {
- order.setStatus(3);
- String refund_settle_amount = jsonObject.getString("refund_settle_amount");
- String refund_plat_trx_no = jsonObject.getString("refund_plat_trx_no");
- order.setRefundTrxNo(refund_plat_trx_no);
- order.setRefundAmount(new BigDecimal(refund_settle_amount));
- order.setRefundDate(new Date());
- payFeign.updateOrder(order);
- //金额表今日金额要改 要分类型
- TAdmin admin = tAdminService.getById(order.getAdminId());
- Integer orderType = order.getType();
- switch (orderType) {
- case 0:
- BigDecimal agencyProportion = order.getAgencyProportion();
- // 代理分销获得利润
- BigDecimal agencyPrice = price.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
- //修改金额表的今日金额
- LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
- query.eq(TShandeMch::getAdminId,order.getAdminId());
- List<TShandeMch> list = tShandeMchService.list(query);
- if(list.size()>0){
- TShandeMch shandeMch = list.get(0);
- BigDecimal todayBalance = shandeMch.getTodayBalance();
- todayBalance = todayBalance.subtract(agencyPrice).setScale(2, RoundingMode.HALF_DOWN);
- shandeMch.setTodayBalance(todayBalance);
- shandeMch.setModifyDate(new Date());
- tShandeMchService.updateById(shandeMch);
- }
- break;
- case 1:
- BigDecimal agencyProportion1 = order.getAgencyProportion();
- BigDecimal merchantProportion1 = order.getMerchantProportion();
- // 代理分销获得利润
- BigDecimal agencyPrice1 = price.multiply(agencyProportion1.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
- // 经销商分销获得利润
- BigDecimal merchantAmount1 = price.multiply(merchantProportion1.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
- //修改代理金额表的今日金额
- // TShandeMchExample shandeMchExample1 = new TShandeMchExample();
- // TShandeMchExample.Criteria shandeMchExampleCriteria1 = shandeMchExample1.createCriteria();
- // shandeMchExampleCriteria1.andAdminIdEqualTo(admin.getParentId());
- // List<TShandeMch> list1 = tShandeMchService.selectByOption(shandeMchExample1);
- LambdaQueryWrapper<TShandeMch> query1 = Wrappers.lambdaQuery();
- query1.eq(TShandeMch::getAdminId,order.getAgencyId());
- List<TShandeMch> list1 = tShandeMchService.list(query1);
- if(list1.size()>0){
- TShandeMch shandeMch = list1.get(0);
- BigDecimal todayBalance = shandeMch.getTodayBalance();
- todayBalance = todayBalance.subtract(agencyPrice1).setScale(2, RoundingMode.HALF_DOWN);
- shandeMch.setTodayBalance(todayBalance);
- shandeMch.setModifyDate(new Date());
- tShandeMchService.updateById(shandeMch);
- }
- //修改经销商金额表的今日金额
- // TShandeMchExample shandeMchExample2 = new TShandeMchExample();
- // TShandeMchExample.Criteria shandeMchExampleCriteria2 = shandeMchExample2.createCriteria();
- // shandeMchExampleCriteria2.andAdminIdEqualTo(admin.getId());
- // List<TShandeMch> list2 = tShandeMchService.selectByOption(shandeMchExample2);
- LambdaQueryWrapper<TShandeMch> query2 = Wrappers.lambdaQuery();
- query2.eq(TShandeMch::getAdminId,admin.getId());
- List<TShandeMch> list2 = tShandeMchService.list(query2);
- if(list2.size()>0){
- TShandeMch shandeMch = list2.get(0);
- BigDecimal todayBalance = shandeMch.getTodayBalance();
- todayBalance = todayBalance.subtract(merchantAmount1).setScale(2, RoundingMode.HALF_DOWN);
- shandeMch.setTodayBalance(todayBalance);
- shandeMch.setModifyDate(new Date());
- tShandeMchService.updateById(shandeMch);
- }
- break;
- case 2:
- BigDecimal agencyProportion2 = order.getAgencyProportion();
- BigDecimal merchantProportion2 = order.getMerchantProportion();
- BigDecimal personageProportion2 = order.getPersonageProportion();
- // 代理分销获得利润
- BigDecimal agencyAmount = price.multiply(agencyProportion2.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
- // 经销商分销获得利润
- BigDecimal merchantAmount = price.multiply(merchantProportion2.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
- // 经销商分销获得利润
- BigDecimal personageAmount = price.multiply(personageProportion2.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
- //修改代理金额表的今日金额
- // TShandeMchExample shandeMchExample3 = new TShandeMchExample();
- // TShandeMchExample.Criteria shandeMchExampleCriteria3 = shandeMchExample3.createCriteria();
- // shandeMchExampleCriteria3.andAdminIdEqualTo(admin.getAgencyId());
- // List<TShandeMch> list3 = tShandeMchService.selectByOption(shandeMchExample3);
- LambdaQueryWrapper<TShandeMch> query3 = Wrappers.lambdaQuery();
- query3.eq(TShandeMch::getAdminId,order.getAgencyId());
- List<TShandeMch> list3 = tShandeMchService.list(query3);
- if(list3.size()>0){
- TShandeMch shandeMch = list3.get(0);
- BigDecimal todayBalance = shandeMch.getTodayBalance();
- todayBalance = todayBalance.subtract(agencyAmount).setScale(2, RoundingMode.HALF_DOWN);
- shandeMch.setTodayBalance(todayBalance);
- shandeMch.setModifyDate(new Date());
- tShandeMchService.updateById(shandeMch);
- }
- //修改经销商金额表的今日金额
- // TShandeMchExample shandeMchExample4 = new TShandeMchExample();
- // TShandeMchExample.Criteria shandeMchExampleCriteria4 = shandeMchExample4.createCriteria();
- // shandeMchExampleCriteria4.andAdminIdEqualTo(admin.getMerchantId());
- // List<TShandeMch> list4 = tShandeMchService.selectByOption(shandeMchExample4);
- LambdaQueryWrapper<TShandeMch> query4 = Wrappers.lambdaQuery();
- query4.eq(TShandeMch::getAdminId,order.getMerchantId());
- List<TShandeMch> list4 = tShandeMchService.list(query4);
- if(list4.size()>0){
- TShandeMch shandeMch = list4.get(0);
- BigDecimal todayBalance = shandeMch.getTodayBalance();
- todayBalance = todayBalance.subtract(merchantAmount).setScale(2, RoundingMode.HALF_DOWN);
- shandeMch.setTodayBalance(todayBalance);
- shandeMch.setModifyDate(new Date());
- tShandeMchService.updateById(shandeMch);
- }
- //修改终端金额表的今日金额
- // TShandeMchExample shandeMchExample5 = new TShandeMchExample();
- // TShandeMchExample.Criteria shandeMchExampleCriteria5 = shandeMchExample5.createCriteria();
- // shandeMchExampleCriteria5.andAdminIdEqualTo(admin.getId());
- // List<TShandeMch> list5 = tShandeMchService.selectByOption(shandeMchExample5);
- LambdaQueryWrapper<TShandeMch> query5 = Wrappers.lambdaQuery();
- query5.eq(TShandeMch::getAdminId,admin.getId());
- List<TShandeMch> list5 = tShandeMchService.list(query5);
- if(list5.size()>0){
- TShandeMch shandeMch = list5.get(0);
- BigDecimal todayBalance = shandeMch.getTodayBalance();
- todayBalance = todayBalance.subtract(personageAmount).setScale(2, RoundingMode.HALF_DOWN);
- shandeMch.setTodayBalance(todayBalance);
- shandeMch.setModifyDate(new Date());
- tShandeMchService.updateById(shandeMch);
- }
- break;
- }
- TOrder order1 = R.getDataIfSuccess(payFeign.getOrder(String.valueOf(torder.getId())));
- order1.setModifyDate(new Date());
- esTOrderService.updateDataById(order1);
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(true)
- .setData("申请退款已成功")
- .setMessage("申请退款已成功"));
- } else {
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(false)
- .setData("申请退款失败")
- .setMessage(refund));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- try {
- String result = orderService.refund(order.getSn(), orderService.initRefundSn(equipmentId), price, "", notifyUrl, altRefInfo.toString());
- if (Constant.correct_code.equals(result)) {
- order.setStatus(2);
- payFeign.updateOrder(order);
- // tOrderService.updateById(order);
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(true)
- .setData("申请退款已成功")
- .setMessage("申请退款已成功"));
- } else {
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(false)
- .setData("申请退款失败")
- .setMessage("申请退款失败"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return ResponseEntity
- .status(HttpStatus.OK)
- .body(new ResultMessage()
- .setCode(true)
- .setData("申请退款已成功")
- .setMessage("申请退款已成功"));
- }
- @ApiOperation(value = "添加优惠码")
- @GetMapping("/equipmentPay")
- public ResponseModel<?> equipmentPay(Double number, Long equipmentId, String frpCode) {
- TEquipment equipment = tEquipmentService.getById(equipmentId);
- if (!frpCode.equals("ALIPAY_NATIVE") && !frpCode.equals("WEIXIN_NATIVE")) {
- return R.fail("参数错误");
- }
- if (equipment == null) {
- return R.fail("找不到设备");
- }
- TAdmin admin = tAdminService.getById(equipment.getAdminId());
- Double money = null;
- LambdaQueryWrapper<TPrice> query1 = Wrappers.lambdaQuery();
- query1.eq(TPrice::getName,"MG280");
- List<TPrice> prices = priceService.list(query1);
- for(TPrice price:prices){
- if(price.getName().equals("MG280")){
- money = price.getPrice();
- }
- }
- BigDecimal price = null;
- double pri = money * number;
- price = BigDecimal.valueOf(pri);
- String sn = orderService.initSn(equipmentId);
- String orderNo = sn;
- String productName = "280充值";
- BigDecimal cutPrice = price.multiply(new BigDecimal(100)).divide(new BigDecimal(100));
- BigDecimal amount = cutPrice;
- String productDesc = "";
- String commonParameter = "";
- String returnUrl = null;
- String notifyUrl = JoinpayConstant.Notify_Url_PromoCode;
- String isShowPic = "1";
- String openId = null;
- String authCode = null;
- String appid = null;
- String transactionModel = null;
- String tradeMerchantNo = null;
- String buyerId = null;
- String isAlt = "0";
- String altType = null;
- String altUrl = null;
- BigDecimal marketingAmount = null;
- // frpCode = "WEIXIN_NATIVE";
- TOrder order1 = new TOrder();
- order1.setSn(sn);
- order1.setType(0);
- order1.setAdminId(admin.getId());
- order1.setProductName(productName);
- order1.setPrice(price);
- order1.setEquipmentId(equipmentId);
- order1.setClientId(equipment.getClientId());
- order1.setStatus(0);
- order1.setFrpCode(frpCode);
- order1.setCreateDate(new Date());
- order1.setModifyDate(new Date());
- payFeign.addOrder(order1);
- JSONArray altInfo = new JSONArray();
- String result = null;
- try {
- result = joinpayMchService.uniPay(
- orderNo, amount, productName, productDesc,
- commonParameter, returnUrl, notifyUrl, frpCode,
- isShowPic, openId, authCode, appid, transactionModel, tradeMerchantNo,
- buyerId, isAlt, altType, altInfo, altUrl, marketingAmount
- );
- } catch (Exception e) {
- e.printStackTrace();
- return R.fail("申请支付失败");
- }
- JSONObject resultJson = JSONObject.parseObject(result);
- // 汇聚支付支付申请返回支付二维码图片
- String rd_Pic = resultJson.getString("rd_Pic");
- if (resultJson == null || StringUtils.isBlank(rd_Pic)) {
- return R.fail("找不到支付图片");
- }
- JSONObject kindData = new JSONObject();
- kindData.put("sn", sn);
- kindData.put("price", price);
- kindData.put("image", rd_Pic);
- return R.ok(kindData);
- }
- }
|