From 8eea4568b537b2843fee859d4860733fd6681a1a Mon Sep 17 00:00:00 2001 From: Carl <376654749@qq.com> Date: Tue, 11 Jan 2022 15:57:55 +0800 Subject: [PATCH] bug fix --- .../module/system/alipay/AliPayService.java | 10 +++ .../royalcanin/TransitionController.java | 16 +++++ .../royalcanin/good/GoodController.java | 1 - .../royalcanin/good/OrderController.java | 62 +++++++++++++++++++ .../royalcanin/good/service/GoodService.java | 34 ++++++++++ .../royalcanin/good/service/OrderService.java | 3 - .../module/system/wxpay/WxpayService.java | 60 ++++++++++++++++++ 7 files changed, 182 insertions(+), 4 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/alipay/AliPayService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/alipay/AliPayService.java index 568eb033..6c1ffb20 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/alipay/AliPayService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/alipay/AliPayService.java @@ -24,6 +24,7 @@ public class AliPayService { @Autowired private OrderService orderService; + public String generateQRCode(AliPayEntity aliPayEntity) throws Exception { AlipayTradePrecreateModel model = new AlipayTradePrecreateModel(); model.setSubject("皇家宠物食品官方商城"); @@ -45,4 +46,13 @@ public class AliPayService { throw new RuntimeException("支付宝生成二维码失败"); } } + + public void orderCallBackAliPay(String outTradeNo,String totalFee ) throws Exception { + if (orderService.afterPaySucceedUpdateOrderStatus(outTradeNo,totalFee)) { + QueryEntity queryEntity = new QueryEntity(); + queryEntity.setOrderNumber(outTradeNo); + String orderEntityJson = orderService.query(queryEntity); + orderService.completeOrder(totalFee,orderEntityJson); + } + } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java index e678a969..5356b8b3 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java @@ -14,6 +14,7 @@ import net.lab1024.smartadmin.module.system.royalcanin.couponConfig.CouponConfig import net.lab1024.smartadmin.module.system.royalcanin.couponConfig.CouponConfigGetEntity; import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogEntity; import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogService; +import net.lab1024.smartadmin.module.system.royalcanin.good.service.GoodService; import net.lab1024.smartadmin.module.system.royalcanin.good.service.OrderService; import net.lab1024.smartadmin.module.system.royalcanin.member.*; import net.lab1024.smartadmin.module.system.royalcanin.memberAccount.MemberAccountChangeEntity; @@ -59,6 +60,9 @@ public class TransitionController { @Autowired private OrderService orderService; + @Autowired + private GoodService goodService; + @ApiOperation(value = "会员信息", notes = "会员查询,验证会员信息,会员注册") @PostMapping("royalcanin/member") @@ -217,6 +221,18 @@ public class TransitionController { return result; } + @ApiOperation(value = "测试缓存", notes = "set测试缓存") + @PostMapping("royalcanin/setRedis") + public String testSetRedis(String key ,String value) { + goodService.testRedis(key,value); + return "1"; + } + @ApiOperation(value = "测试缓存", notes = "get测试缓存") + @PostMapping("royalcanin/getRedis") + public String testGetRedis(String key) { + + return goodService.testGetRedis(key); + } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java index accb489a..a7a571e4 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java @@ -20,7 +20,6 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.service.GoodService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java index fbcf3f20..e9e2de00 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java @@ -107,6 +107,68 @@ public class OrderController { } + @ApiOperation(value = "微信支付H5订单", notes = "生成H5订单") + @PostMapping("royalcanin/generateOrderWXH5") + public Map generateOrderWXH5(@RequestBody List ordersEntityList) throws Exception { + StringBuffer productId = new StringBuffer(); + StringBuffer productName = new StringBuffer(); + String memberId = ""; + String mobile = ""; + int buyCount = 0; + double total_fee = 0 ; + WxPayEntity wxPayEntity = new WxPayEntity(); + JSONArray orderDatilListJson = new JSONArray(); + OrdersEntity ordersEntity = new OrdersEntity(); + OrderAddress orderAddress = new OrderAddress(); + for (OrdersEntity ordersEntitys:ordersEntityList) { + cartService.cancelProduct(ordersEntitys.getMemberId(),ordersEntity.getProductCode()); + //存储orderDetailList + OrderDatilListEntity orderDatilListEntity= new OrderDatilListEntity(); + orderDatilListEntity.setProductName(ordersEntitys.getProductName()); + orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); + orderDatilListEntity.setProductCode(ordersEntitys.getProductCode()); + orderDatilListEntity.setEcPrice(ordersEntitys.getPayAmount()); + orderDatilListJson.add(orderDatilListEntity); + if(ordersEntitys.getCouponCode() != "") { + ordersEntity.setCouponAmount(ordersEntitys.getCouponAmount()); + ordersEntity.setCouponCode(ordersEntitys.getCouponCode()); + ordersEntity.setCouponName(ordersEntitys.getCouponName()); + ordersEntity.setCouponId(ordersEntitys.getCouponId()); + } + orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); + productId.append(ordersEntitys.getProductCode()+","); + productName.append(ordersEntitys.getProductName()+","); + total_fee = total_fee + orderService.couponTotal(ordersEntitys.getCouponTypeId(),Double.parseDouble(ordersEntitys.getCouponAmount()),Double.parseDouble(ordersEntitys.getPayAmount()),ordersEntitys.getBuyCount()); + memberId = ordersEntitys.getMemberId(); + mobile = ordersEntitys.getPhoneNumber(); + buyCount = buyCount + ordersEntitys.getBuyCount(); + } + ordersEntity.setOrderAddress(orderAddress); + ordersEntity.setProductCode(productId.substring(0,productId.length()-1)); + ordersEntity.setProductName(productName.substring(0,productName.length()-1)); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); + ordersEntity.setMemberId(memberId); + ordersEntity.setPhoneNumber(mobile); + ordersEntity.setBuyCount(buyCount); + ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); + ordersEntity.setOrderStatus("0"); + + if(orderService.generateOrder(ordersEntity,orderDatilListJson) == 1){ + wxPayEntity.setProduct_id(ordersEntity.getProductCode()); + wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); + wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); + return wxpayService.dounifiedOrder(wxPayEntity); + }else { + return null; + } + } + + @ApiOperation(value = "更新订单", notes = "更新订单") @RequestMapping(value = "royalcanin/updateOrderWX") diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java index 6eb0d002..e814966e 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java @@ -1,6 +1,8 @@ package net.lab1024.smartadmin.module.system.royalcanin.good.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import net.lab1024.smartadmin.common.heartbeat.StringUtil; import net.lab1024.smartadmin.module.system.royalcanin.good.dao.GoodsDao; import net.lab1024.smartadmin.module.system.royalcanin.good.model.GoodsEntity; import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductMasterQueryEntity; @@ -9,11 +11,13 @@ import net.lab1024.smartadmin.util.AESUtil; import net.lab1024.smartadmin.util.MapRemoveNullUtil; import net.lab1024.smartadmin.util.SmartHttpUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; @Service public class GoodService { @@ -23,6 +27,9 @@ public class GoodService { @Autowired private GoodsDao goodsDao; + @Autowired + private RedisTemplate redisTemplate; + public GoodsEntity listGoodsByProductCode(String productCode){ return goodsDao.findByProductCode(productCode); } @@ -60,4 +67,31 @@ public class GoodService { String result = AESUtil.decryptLinux(jsonObject.getString("data"), AESUtil.KEY); return result; } + + +// public static void main(String[] args) { +// String brandStr = "[{\"brandCode\":\"0016518816\",\"brandName\":\"皇家\",\"categoryName\":\"皇家营养猫粮\",\"id\":1,\"isSales\":1,\"name\":\"离乳期幼猫全价猫奶糕\",\"petType\":0,\"picture\":\"http://localhost:8080/rcmini2020/upload/1624430524688_HJwjUX.jpg\",\"productCode\":\"BK34|2018113014320946261810\",\"productList\":[{\"id\":1,\"productCode\":\"20010200\"},{\"id\":2,\"productCode\":\"20011000\"},{\"id\":263,\"productCode\":\"20010040\"},{\"id\":333,\"productCode\":\"2001020002\"},{\"id\":424,\"productCode\":\"20010200F03\"},{\"id\":456,\"productCode\":\"2001004003\"},{\"id\":509,\"productCode\":\"code4554\"},{\"id\":511,\"productCode\":\"测试活动\"},{\"id\":598,\"productCode\":\"213\"}],\"tagUsedAge\":\"<4月龄\"}]\n"; +// String productStr = "{total: 2,code: 1,data:[{id: 1284,productCode: 20010200,productName: 离乳期幼猫全价猫奶糕,ecPrice: 178.0,},{id: 1285,productCode: 20030200,productName: 幼猫全价粮,ecPrice: 147.0,}]}"; +// JSONArray brandList = JSONArray.parseArray(brandStr); +//// JSONArray productList = JSONArray.parseArray(productStr); +// for(int i = 0; i < brandList.size(); i++) { +// JSONObject obj = brandList.getJSONObject(i); +// JSONArray productCodeList = JSONObject.parseArray(obj.getString("productList")); +// for(int j = 0 ;j dounifiedOrder(WxPayEntity wxPayEntity) throws Exception { + //返回参数 + Map returnMap = new HashMap<>(); + WXPay wxpay = new WXPay(config); + //请求参数封装 + Map data = new HashMap<>(); + + data.put("out_trade_no",wxPayEntity.getOut_trade_no()); + data.put("notify_url",config.notify_url); + data.put("fee_type","CNY"); + data.put("total_fee",getMoney(wxPayEntity.getTotal_fee())); + data.put("spbill_create_ip", SmartIPUtil.getLocalHostIP()); + data.put("trade_type", "MWEB"); // 此处指定为扫码支付 + data.put("body","皇家宠物食品官方商城"); + data.put("nonce_str", WXPayUtil.generateNonceStr()); + data.put("product_id",wxPayEntity.getProduct_id()); + +// data.put("appid", config.getAppID()); +// data.put("mch_id", config.getMchID()); +// data.put("nonce_str", WXPayUtil.generateNonceStr()); +// data.put("body", "H5订单支付"); +// data.put("out_trade_no", wxPayEntity.getOut_trade_no());//订单号 +// data.put("total_fee", "1");//支付金额 +// data.put("spbill_create_ip", SmartIPUtil.getLocalHostIP()); //自己的服务器IP地址 +// data.put("notify_url", config.notify_url);//异步通知地址(请注意必须是外网) +// data.put("trade_type", config.getH5Type());//交易类型 +// data.put("attach", type);//附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 + String s = WXPayUtil.generateSignature(data, config.getKey()); //签名 + data.put("sign", s);//签名 + try { + //使用官方API请求预付订单 + Map response = wxpay.unifiedOrder(data); + String returnCode = response.get("return_code");//获取返回码 + //若返回码为SUCCESS,则会返回一个result_code,再对该result_code进行判断 + if (returnCode.equals("SUCCESS")) { + returnMap.put("ok", "200"); + //拼接返回跳转地址 + String url= config.NOTIFY_URL_H5; + returnMap.put("url", response.get("mweb_url")+"&redirect_url="+url); + } else { + returnMap.put("ok", "201"); + returnMap.put("url",null); + return returnMap; + } + } catch (Exception e) { + System.out.println(e); + //系统等其他错误的时候 + } + return returnMap; + } + + /**