This commit is contained in:
Carl 2022-01-11 15:57:55 +08:00
parent 425d7f475b
commit 8eea4568b5
7 changed files with 182 additions and 4 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}

View File

@ -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;

View File

@ -107,6 +107,68 @@ public class OrderController {
}
@ApiOperation(value = "微信支付H5订单", notes = "生成H5订单")
@PostMapping("royalcanin/generateOrderWXH5")
public Map<String, String> generateOrderWXH5(@RequestBody List<OrdersEntity> 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")

View File

@ -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 <productCodeList.size();j++){
// JSONObject productListObj = productCodeList.getJSONObject(j);
// System.out.println(productListObj.getString("productCode"));
// }
// }
// }
public void testRedis(String key ,String value ){
redisTemplate.opsForValue().set(key,value);
redisTemplate.opsForValue().set(key,value,5, TimeUnit.DAYS);
}
public String testGetRedis(String key){
return StringUtil.toString(redisTemplate.opsForValue().get(key));
}
}

View File

@ -8,7 +8,6 @@ import net.lab1024.smartadmin.module.system.royalcanin.CouponService;
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCancelEntity;
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCosumeEntity;
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponFetchEntity;
import net.lab1024.smartadmin.module.system.royalcanin.couponConfig.CouponConfigFindAllEntity;
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.constant.OrderResponseCodeConst;
@ -21,10 +20,8 @@ import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderCouponEn
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity;
import net.lab1024.smartadmin.util.AESUtil;
import net.lab1024.smartadmin.util.MapRemoveNullUtil;
import net.lab1024.smartadmin.util.SmartBeanUtil;
import net.lab1024.smartadmin.util.SmartHttpUtil;
import net.sf.json.JSONArray;
import org.apache.poi.hpsf.Decimal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

View File

@ -6,6 +6,7 @@ import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity;
import net.lab1024.smartadmin.module.system.wxpay.sdk.WXPay;
import net.lab1024.smartadmin.module.system.wxpay.sdk.WXPayUtil;
import net.lab1024.smartadmin.module.system.wxpay.wxPayModel.WxPayEntity;
import net.lab1024.smartadmin.util.SmartIPUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -17,6 +18,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
@ -27,6 +29,7 @@ public class WxpayService {
@Autowired
private MyConfig config;
@Autowired
private OrderService orderService;
@ -102,6 +105,63 @@ public class WxpayService {
}
}
/**
* /H5微信支付(预下单)
* @return
* @throws Exception
*/
public Map<String, String> dounifiedOrder(WxPayEntity wxPayEntity) throws Exception {
//返回参数
Map<String, String> returnMap = new HashMap<>();
WXPay wxpay = new WXPay(config);
//请求参数封装
Map<String, String> 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<String, String> 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;
}
/**