mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-10-02 02:06:38 +08:00
commit
eb31e0bff4
@ -13,7 +13,6 @@ import net.lab1024.smartadmin.module.system.alipay.AliPayService;
|
|||||||
import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity;
|
import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity;
|
||||||
import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig;
|
import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.CouponService;
|
import net.lab1024.smartadmin.module.system.royalcanin.CouponService;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCosumeEntity;
|
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity;
|
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst;
|
import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress;
|
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress;
|
||||||
@ -65,553 +64,13 @@ public class OrderController {
|
|||||||
@ApiOperation(value = "微信支付订单", notes = "生成订单")
|
@ApiOperation(value = "微信支付订单", notes = "生成订单")
|
||||||
@PostMapping("royalcanin/generateOrderWX")
|
@PostMapping("royalcanin/generateOrderWX")
|
||||||
public ResponseDTO<Map<String, String>> generateOrderWX(@RequestBody List<OrdersEntity> ordersEntityList){
|
public ResponseDTO<Map<String, String>> generateOrderWX(@RequestBody List<OrdersEntity> ordersEntityList){
|
||||||
StringBuffer productId = new StringBuffer();
|
return orderService.createOrderWXInfo(ordersEntityList);
|
||||||
StringBuffer productName = new StringBuffer();
|
|
||||||
Map<String, String> resultMsg = new HashMap<>();
|
|
||||||
String mobile = "";
|
|
||||||
int buyCount = 0;
|
|
||||||
double total_fee = 0 ;
|
|
||||||
double basePoint = 0 ;
|
|
||||||
WxPayEntity wxPayEntity = new WxPayEntity();
|
|
||||||
JSONArray orderDatilListJson = new JSONArray();
|
|
||||||
OrdersEntity ordersEntity = new OrdersEntity();
|
|
||||||
OrderAddress orderAddress = new OrderAddress();
|
|
||||||
|
|
||||||
String memberId = "";
|
|
||||||
String couponCode = "";
|
|
||||||
try {
|
|
||||||
//先查订单存在的优惠券
|
|
||||||
for (OrdersEntity orders : ordersEntityList){
|
|
||||||
if (orders.getCouponCode() != "" && orders.getCouponCode() != null) {
|
|
||||||
couponCode = orders.getCouponCode();
|
|
||||||
}
|
|
||||||
memberId = orders.getMemberId();
|
|
||||||
}
|
|
||||||
|
|
||||||
//根据有没有优惠券来计算商品的总价
|
|
||||||
if(SmartStringUtil.isNotEmpty(couponCode)){
|
|
||||||
CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity();
|
|
||||||
couponGetAllEntity.setMemberId(memberId);
|
|
||||||
couponGetAllEntity.setCouponCode(couponCode);
|
|
||||||
String couponInfo = couponService.couponGetAll(couponGetAllEntity);
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject(couponInfo);
|
|
||||||
com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
|
|
||||||
if(jsonArray.size() == 0){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject jsonObjectData = (JSONObject) jsonArray.get(0);
|
|
||||||
if (jsonObjectData.getString("udf2") != null){
|
|
||||||
if (!jsonObjectData.getString("udf2").equals("H5")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券
|
|
||||||
if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){
|
|
||||||
String[] productCodes = jsonObjectData.getString("productCodes").toString().split(",");
|
|
||||||
List<ProductMasterQueryEntity> productMasterList = new ArrayList<ProductMasterQueryEntity>();
|
|
||||||
//用来保存指定类的购物车商品数据
|
|
||||||
List<OrdersEntity> ordersList = new ArrayList<OrdersEntity>();
|
|
||||||
//保存购物车其它的商品
|
|
||||||
List<OrdersEntity> ordersList2 = new ArrayList<OrdersEntity>();
|
|
||||||
|
|
||||||
for (OrdersEntity orders2 : ordersEntityList){
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(orders2.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0);
|
|
||||||
|
|
||||||
if(SmartStringUtil.isNotBlank(goodsObject.getString("productCode"))){
|
|
||||||
if(Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){
|
|
||||||
ordersList.add(orders2);
|
|
||||||
}else{
|
|
||||||
ordersList2.add(orders2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//得到当前能用优惠券的商品总金额
|
|
||||||
Double total_Coupon = 0.0;
|
|
||||||
//得到其它商品的总金额
|
|
||||||
Double total_Other = 0.0;
|
|
||||||
|
|
||||||
if( ordersList != null && ordersList.size() > 0 ) {
|
|
||||||
//遍历购物车中能用当前优惠券的商品
|
|
||||||
for (OrdersEntity entity : ordersList) {
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(entity.getMemberId(), entity.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(entity.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray2 = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject2 = (JSONObject) jsonGoodsArray2.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject2.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(entity.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject2.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject2.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + entity.getBasePoint();
|
|
||||||
orderAddress.setAddressCityName(entity.getOrderAddress().getAddressCityName());
|
|
||||||
orderAddress.setAddressCountyName(entity.getOrderAddress().getAddressCountyName());
|
|
||||||
orderAddress.setAddressDetailInfo(entity.getOrderAddress().getAddressDetailInfo());
|
|
||||||
orderAddress.setAddressPhoneNumber(entity.getOrderAddress().getAddressPhoneNumber());
|
|
||||||
orderAddress.setAddressUserName(entity.getOrderAddress().getAddressUserName());
|
|
||||||
orderAddress.setAddressProvinceName(entity.getOrderAddress().getAddressProvinceName());
|
|
||||||
productId.append(entity.getProductCode() + ",");
|
|
||||||
productName.append(entity.getProductName() + ",");
|
|
||||||
memberId = entity.getMemberId();
|
|
||||||
mobile = entity.getPhoneNumber();
|
|
||||||
buyCount = buyCount + entity.getBuyCount();
|
|
||||||
}
|
|
||||||
//校验当前订单金额有没有小于优惠券金额
|
|
||||||
if(jsonObjectData.getString("couponAmount") != null ){
|
|
||||||
Double couponAmount = Double.valueOf(jsonObjectData.getString("couponAmount"));
|
|
||||||
if(total_Coupon < couponAmount){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount"));
|
|
||||||
ordersEntity.setCouponCode(jsonObjectData.getString("couponCode"));
|
|
||||||
ordersEntity.setCouponName(jsonObjectData.getString("couponName"));
|
|
||||||
ordersEntity.setCouponId(jsonObjectData.getString("couponId"));
|
|
||||||
ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId"));
|
|
||||||
total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ordersList2 != null && ordersList2.size() > 0 ) {
|
|
||||||
//遍历购物车的其它商品
|
|
||||||
for (OrdersEntity entity2 : ordersList2) {
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(entity2.getMemberId(), entity2.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(entity2.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray3 = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject3 = (JSONObject) jsonGoodsArray3.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject3.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(entity2.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject3.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject3.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_Other = total_Other + Double.parseDouble(goodsObject3.getString("ecPrice")) * entity2.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + entity2.getBasePoint();
|
|
||||||
orderAddress.setAddressCityName(entity2.getOrderAddress().getAddressCityName());
|
|
||||||
orderAddress.setAddressCountyName(entity2.getOrderAddress().getAddressCountyName());
|
|
||||||
orderAddress.setAddressDetailInfo(entity2.getOrderAddress().getAddressDetailInfo());
|
|
||||||
orderAddress.setAddressPhoneNumber(entity2.getOrderAddress().getAddressPhoneNumber());
|
|
||||||
orderAddress.setAddressUserName(entity2.getOrderAddress().getAddressUserName());
|
|
||||||
orderAddress.setAddressProvinceName(entity2.getOrderAddress().getAddressProvinceName());
|
|
||||||
productId.append(entity2.getProductCode() + ",");
|
|
||||||
productName.append(entity2.getProductName() + ",");
|
|
||||||
memberId = entity2.getMemberId();
|
|
||||||
mobile = entity2.getPhoneNumber();
|
|
||||||
buyCount = buyCount + entity2.getBuyCount();
|
|
||||||
}
|
|
||||||
total_fee = total_fee + total_Other;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for (OrdersEntity ordersEntitys : ordersEntityList) {
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(ordersEntitys.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + ordersEntitys.getBasePoint();
|
|
||||||
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()+",");
|
|
||||||
memberId = ordersEntitys.getMemberId();
|
|
||||||
if (ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) {
|
|
||||||
couponCode = ordersEntitys.getCouponCode();
|
|
||||||
}
|
|
||||||
mobile = ordersEntitys.getPhoneNumber();
|
|
||||||
buyCount = buyCount + ordersEntitys.getBuyCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount"));
|
|
||||||
ordersEntity.setCouponCode(jsonObjectData.getString("couponCode"));
|
|
||||||
ordersEntity.setCouponName(jsonObjectData.getString("couponName"));
|
|
||||||
ordersEntity.setCouponId(jsonObjectData.getString("couponId"));
|
|
||||||
ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId"));
|
|
||||||
total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for (OrdersEntity ordersEntitys : ordersEntityList) {
|
|
||||||
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(ordersEntitys.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + ordersEntitys.getBasePoint();
|
|
||||||
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()+",");
|
|
||||||
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");
|
|
||||||
ordersEntity.setBasePoint(basePoint);
|
|
||||||
ordersEntity.setPayType("3");
|
|
||||||
resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson);
|
|
||||||
if (resultMsg.get("code").equals("1")) {
|
|
||||||
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
|
|
||||||
wxPayEntity.setTotal_fee(StringUtil.toString(total_fee));
|
|
||||||
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
|
|
||||||
Map<String, String> returnMap = new HashMap<>();
|
|
||||||
returnMap.put("orderNumber", ordersEntity.getOrderNo());
|
|
||||||
returnMap.put("orderAmount", ordersEntity.getOrderAmount());
|
|
||||||
return ResponseDTO.succData(returnMap, wxpayService.generateQRCode(wxPayEntity));
|
|
||||||
}else if (resultMsg.get("code").equals("0")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg"));
|
|
||||||
}else if (resultMsg.get("code").equals("3")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg"));
|
|
||||||
}else if (resultMsg.get("code").equals("4")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg"));
|
|
||||||
}
|
|
||||||
}catch (Exception e){
|
|
||||||
System.out.println(e.getMessage());
|
|
||||||
}
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "微信支付H5订单", notes = "生成H5订单")
|
@ApiOperation(value = "微信支付H5订单", notes = "生成H5订单")
|
||||||
@PostMapping("royalcanin/generateOrderWXH5")
|
@PostMapping("royalcanin/generateOrderWXH5")
|
||||||
public ResponseDTO<Map<String, String>> generateOrderWXH5(@RequestBody List<OrdersEntity> ordersEntityList){
|
public ResponseDTO<Map<String, String>> generateOrderWXH5(@RequestBody List<OrdersEntity> ordersEntityList){
|
||||||
StringBuffer productId = new StringBuffer();
|
return orderService.createOrderWXH5Info(ordersEntityList);
|
||||||
StringBuffer productName = new StringBuffer();
|
|
||||||
Map<String, String> resultMsg = new HashMap<>();
|
|
||||||
String mobile = "";
|
|
||||||
int buyCount = 0;
|
|
||||||
double total_fee = 0 ;
|
|
||||||
double basePoint = 0 ;
|
|
||||||
WxPayEntity wxPayEntity = new WxPayEntity();
|
|
||||||
JSONArray orderDatilListJson = new JSONArray();
|
|
||||||
OrdersEntity ordersEntity = new OrdersEntity();
|
|
||||||
OrderAddress orderAddress = new OrderAddress();
|
|
||||||
|
|
||||||
String memberId = "";
|
|
||||||
String couponCode = "";
|
|
||||||
try {
|
|
||||||
//先查订单存在的优惠券
|
|
||||||
for (OrdersEntity orders : ordersEntityList){
|
|
||||||
if (orders.getCouponCode() != "" && orders.getCouponCode() != null) {
|
|
||||||
couponCode = orders.getCouponCode();
|
|
||||||
}
|
|
||||||
memberId = orders.getMemberId();
|
|
||||||
}
|
|
||||||
|
|
||||||
//根据有没有优惠券来计算商品的总价
|
|
||||||
if(SmartStringUtil.isNotEmpty(couponCode)){
|
|
||||||
CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity();
|
|
||||||
couponGetAllEntity.setMemberId(memberId);
|
|
||||||
couponGetAllEntity.setCouponCode(couponCode);
|
|
||||||
String couponInfo = couponService.couponGetAll(couponGetAllEntity);
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject(couponInfo);
|
|
||||||
com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
|
|
||||||
if(jsonArray.size() == 0){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject jsonObjectData = (JSONObject) jsonArray.get(0);
|
|
||||||
if (jsonObjectData.getString("udf2") != null){
|
|
||||||
if (!jsonObjectData.getString("udf2").equals("H5")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券
|
|
||||||
if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){
|
|
||||||
String[] productCodes = jsonObjectData.getString("productCodes").toString().split(",");
|
|
||||||
List<ProductMasterQueryEntity> productMasterList = new ArrayList<ProductMasterQueryEntity>();
|
|
||||||
//用来保存指定类的购物车商品数据
|
|
||||||
List<OrdersEntity> ordersList = new ArrayList<OrdersEntity>();
|
|
||||||
//保存购物车其它的商品
|
|
||||||
List<OrdersEntity> ordersList2 = new ArrayList<OrdersEntity>();
|
|
||||||
|
|
||||||
for (OrdersEntity orders2 : ordersEntityList){
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(orders2.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0);
|
|
||||||
|
|
||||||
if(SmartStringUtil.isNotBlank(goodsObject.getString("productCode"))){
|
|
||||||
if(Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){
|
|
||||||
ordersList.add(orders2);
|
|
||||||
}else{
|
|
||||||
ordersList2.add(orders2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//得到当前能用优惠券的商品总金额
|
|
||||||
Double total_Coupon = 0.0;
|
|
||||||
//得到其它商品的总金额
|
|
||||||
Double total_Other = 0.0;
|
|
||||||
|
|
||||||
if( ordersList != null && ordersList.size() > 0 ) {
|
|
||||||
//遍历购物车中能用当前优惠券的商品
|
|
||||||
for (OrdersEntity entity : ordersList) {
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(entity.getMemberId(), entity.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(entity.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray2 = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject2 = (JSONObject) jsonGoodsArray2.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject2.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(entity.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject2.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject2.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + entity.getBasePoint();
|
|
||||||
orderAddress.setAddressCityName(entity.getOrderAddress().getAddressCityName());
|
|
||||||
orderAddress.setAddressCountyName(entity.getOrderAddress().getAddressCountyName());
|
|
||||||
orderAddress.setAddressDetailInfo(entity.getOrderAddress().getAddressDetailInfo());
|
|
||||||
orderAddress.setAddressPhoneNumber(entity.getOrderAddress().getAddressPhoneNumber());
|
|
||||||
orderAddress.setAddressUserName(entity.getOrderAddress().getAddressUserName());
|
|
||||||
orderAddress.setAddressProvinceName(entity.getOrderAddress().getAddressProvinceName());
|
|
||||||
productId.append(entity.getProductCode() + ",");
|
|
||||||
productName.append(entity.getProductName() + ",");
|
|
||||||
memberId = entity.getMemberId();
|
|
||||||
mobile = entity.getPhoneNumber();
|
|
||||||
buyCount = buyCount + entity.getBuyCount();
|
|
||||||
}
|
|
||||||
//校验当前订单金额有没有小于优惠券金额
|
|
||||||
if(jsonObjectData.getString("couponAmount") != null ){
|
|
||||||
Double couponAmount = Double.valueOf(jsonObjectData.getString("couponAmount"));
|
|
||||||
if(total_Coupon < couponAmount){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount"));
|
|
||||||
ordersEntity.setCouponCode(jsonObjectData.getString("couponCode"));
|
|
||||||
ordersEntity.setCouponName(jsonObjectData.getString("couponName"));
|
|
||||||
ordersEntity.setCouponId(jsonObjectData.getString("couponId"));
|
|
||||||
ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId"));
|
|
||||||
total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ordersList2 != null && ordersList2.size() > 0 ) {
|
|
||||||
//遍历购物车的其它商品
|
|
||||||
for (OrdersEntity entity2 : ordersList2) {
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(entity2.getMemberId(), entity2.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(entity2.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray3 = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject3 = (JSONObject) jsonGoodsArray3.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject3.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(entity2.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject3.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject3.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_Other = total_Other + Double.parseDouble(goodsObject3.getString("ecPrice")) * entity2.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + entity2.getBasePoint();
|
|
||||||
orderAddress.setAddressCityName(entity2.getOrderAddress().getAddressCityName());
|
|
||||||
orderAddress.setAddressCountyName(entity2.getOrderAddress().getAddressCountyName());
|
|
||||||
orderAddress.setAddressDetailInfo(entity2.getOrderAddress().getAddressDetailInfo());
|
|
||||||
orderAddress.setAddressPhoneNumber(entity2.getOrderAddress().getAddressPhoneNumber());
|
|
||||||
orderAddress.setAddressUserName(entity2.getOrderAddress().getAddressUserName());
|
|
||||||
orderAddress.setAddressProvinceName(entity2.getOrderAddress().getAddressProvinceName());
|
|
||||||
productId.append(entity2.getProductCode() + ",");
|
|
||||||
productName.append(entity2.getProductName() + ",");
|
|
||||||
memberId = entity2.getMemberId();
|
|
||||||
mobile = entity2.getPhoneNumber();
|
|
||||||
buyCount = buyCount + entity2.getBuyCount();
|
|
||||||
}
|
|
||||||
total_fee = total_fee + total_Other;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for (OrdersEntity ordersEntitys : ordersEntityList) {
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(ordersEntitys.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + ordersEntitys.getBasePoint();
|
|
||||||
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()+",");
|
|
||||||
memberId = ordersEntitys.getMemberId();
|
|
||||||
if (ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) {
|
|
||||||
couponCode = ordersEntitys.getCouponCode();
|
|
||||||
}
|
|
||||||
mobile = ordersEntitys.getPhoneNumber();
|
|
||||||
buyCount = buyCount + ordersEntitys.getBuyCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount"));
|
|
||||||
ordersEntity.setCouponCode(jsonObjectData.getString("couponCode"));
|
|
||||||
ordersEntity.setCouponName(jsonObjectData.getString("couponName"));
|
|
||||||
ordersEntity.setCouponId(jsonObjectData.getString("couponId"));
|
|
||||||
ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId"));
|
|
||||||
total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for (OrdersEntity ordersEntitys : ordersEntityList) {
|
|
||||||
|
|
||||||
//删除购物车信息
|
|
||||||
cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode());
|
|
||||||
//存储orderDetailList
|
|
||||||
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
|
||||||
productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode());
|
|
||||||
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
|
||||||
|
|
||||||
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
|
||||||
JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0);
|
|
||||||
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
|
||||||
orderDatilListEntity.setProductName(goodsObject.getString("productName"));
|
|
||||||
orderDatilListEntity.setPcs(ordersEntitys.getBuyCount());
|
|
||||||
orderDatilListEntity.setProductCode(goodsObject.getString("productCode"));
|
|
||||||
orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice"));
|
|
||||||
orderDatilListJson.add(orderDatilListEntity);
|
|
||||||
|
|
||||||
total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount();
|
|
||||||
|
|
||||||
basePoint = basePoint + ordersEntitys.getBasePoint();
|
|
||||||
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()+",");
|
|
||||||
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");
|
|
||||||
ordersEntity.setBasePoint(basePoint);
|
|
||||||
ordersEntity.setPayType("3");
|
|
||||||
resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson);
|
|
||||||
if (resultMsg.get("code").equals("1")) {
|
|
||||||
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
|
|
||||||
wxPayEntity.setTotal_fee(StringUtil.toString(total_fee));
|
|
||||||
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
|
|
||||||
Map<String, String> returnMap = new HashMap<>();
|
|
||||||
returnMap.put("orderNumber", ordersEntity.getOrderNo());
|
|
||||||
returnMap.put("orderAmount", ordersEntity.getOrderAmount());
|
|
||||||
return ResponseDTO.succData(returnMap,wxpayService.dounifiedOrder(wxPayEntity));
|
|
||||||
}else if (resultMsg.get("code").equals("0")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg"));
|
|
||||||
}else if (resultMsg.get("code").equals("3")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg"));
|
|
||||||
}else if (resultMsg.get("code").equals("4")){
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg"));
|
|
||||||
}
|
|
||||||
}catch (Exception e){
|
|
||||||
System.out.println(e.getMessage());
|
|
||||||
}
|
|
||||||
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -626,7 +85,7 @@ public class OrderController {
|
|||||||
int buyCount = 0;
|
int buyCount = 0;
|
||||||
double total_fee = 0 ;
|
double total_fee = 0 ;
|
||||||
double basePoint = 0 ;
|
double basePoint = 0 ;
|
||||||
WxPayEntity wxPayEntity = new WxPayEntity();
|
WxPayEntity wxPayEntity = new WxPayEntity();--------
|
||||||
JSONArray orderDatilListJson = new JSONArray();
|
JSONArray orderDatilListJson = new JSONArray();
|
||||||
OrdersEntity ordersEntity = new OrdersEntity();
|
OrdersEntity ordersEntity = new OrdersEntity();
|
||||||
OrderAddress orderAddress = new OrderAddress();
|
OrderAddress orderAddress = new OrderAddress();
|
||||||
|
@ -7,7 +7,6 @@ public class OrderResponseCodeConst extends ResponseCodeConst {
|
|||||||
|
|
||||||
public static final OrderResponseCodeConst COUPON_USE_FAIL = new OrderResponseCodeConst(9001, "优惠卷使用失败!");
|
public static final OrderResponseCodeConst COUPON_USE_FAIL = new OrderResponseCodeConst(9001, "优惠卷使用失败!");
|
||||||
|
|
||||||
|
|
||||||
public static final OrderResponseCodeConst GENERATE_ORDER_FAIL = new OrderResponseCodeConst(9002, "订单生成失败!");
|
public static final OrderResponseCodeConst GENERATE_ORDER_FAIL = new OrderResponseCodeConst(9002, "订单生成失败!");
|
||||||
|
|
||||||
public static final OrderResponseCodeConst GENERATE_FAIL = new OrderResponseCodeConst(9003, "数据生成失败!");
|
public static final OrderResponseCodeConst GENERATE_FAIL = new OrderResponseCodeConst(9003, "数据生成失败!");
|
||||||
|
@ -10,6 +10,7 @@ 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.CouponCancelEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCosumeEntity;
|
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.coupon.CouponFetchEntity;
|
||||||
|
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogEntity;
|
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.domain.RoyalcaninOperateLogService;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst;
|
import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst;
|
||||||
@ -17,13 +18,15 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.dao.OrdersDao;
|
|||||||
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress;
|
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity;
|
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrdersEntity;
|
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrdersEntity;
|
||||||
|
import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductMasterQueryEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.notify.service.NotifyService;
|
import net.lab1024.smartadmin.module.system.royalcanin.notify.service.NotifyService;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.AddOrSaveEntity;
|
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.AddOrSaveEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderCouponEntity;
|
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderCouponEntity;
|
||||||
|
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderDatilListEntity;
|
||||||
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity;
|
import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity;
|
||||||
import net.lab1024.smartadmin.util.AESUtil;
|
import net.lab1024.smartadmin.module.system.wxpay.WxpayService;
|
||||||
import net.lab1024.smartadmin.util.MapRemoveNullUtil;
|
import net.lab1024.smartadmin.module.system.wxpay.wxPayModel.WxPayEntity;
|
||||||
import net.lab1024.smartadmin.util.SmartHttpUtil;
|
import net.lab1024.smartadmin.util.*;
|
||||||
import net.sf.json.JSONArray;
|
import net.sf.json.JSONArray;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@ -32,7 +35,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -41,6 +46,18 @@ public class OrderService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private CouponService couponService;
|
private CouponService couponService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GoodService goodService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderService orderService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CartService cartService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WxpayService wxpayService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoyalcaninOperateLogService royalcaninOperateLogService;
|
private RoyalcaninOperateLogService royalcaninOperateLogService;
|
||||||
|
|
||||||
@ -54,7 +71,7 @@ public class OrderService {
|
|||||||
private String url ;
|
private String url ;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public Map<String,String> generateOrder(OrdersEntity ordersEntity, JSONArray listJson) throws Exception {
|
public Map<String,String>generateOrder(OrdersEntity ordersEntity, JSONArray listJson) throws Exception {
|
||||||
AddOrSaveEntity addOrSaveEntity = new AddOrSaveEntity();
|
AddOrSaveEntity addOrSaveEntity = new AddOrSaveEntity();
|
||||||
Map<String, String>resultMap = new HashMap<>();
|
Map<String, String>resultMap = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
@ -342,4 +359,378 @@ public class OrderService {
|
|||||||
return ordersDao.updateByOrderNumber(orderNumber);
|
return ordersDao.updateByOrderNumber(orderNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BigDecimal computeTotal(String couponTypeId, BigDecimal discount, BigDecimal total) {
|
||||||
|
BigDecimal endTotal = new BigDecimal("0");
|
||||||
|
switch (couponTypeId)
|
||||||
|
{
|
||||||
|
// case "5" :
|
||||||
|
// endTotal = (total * (buyCount-1)) + (total * discount);
|
||||||
|
// break;
|
||||||
|
case "2":
|
||||||
|
//total - discount
|
||||||
|
endTotal = total.subtract(discount);
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
//total *(1 - discount)
|
||||||
|
endTotal = total.multiply(new BigDecimal("1").subtract(discount));
|
||||||
|
break;
|
||||||
|
case "1" :
|
||||||
|
//total - discount
|
||||||
|
endTotal = total.subtract(discount);
|
||||||
|
break;
|
||||||
|
case "4" :
|
||||||
|
//total *(1 - discount)
|
||||||
|
endTotal = total.multiply(new BigDecimal("1").subtract(discount));
|
||||||
|
break;
|
||||||
|
case "6" :
|
||||||
|
//total - discount
|
||||||
|
endTotal = total.subtract(discount);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return endTotal;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public ResponseDTO<Map<String, String>> createOrderWXInfo(List<OrdersEntity> ordersEntityList) {
|
||||||
|
Map<String, String> resultMsg = new HashMap<>();
|
||||||
|
BigDecimal total_fee = new BigDecimal("0");
|
||||||
|
WxPayEntity wxPayEntity = new WxPayEntity();
|
||||||
|
JSONArray orderDatilListJson = new JSONArray();
|
||||||
|
OrdersEntity ordersEntity = new OrdersEntity();
|
||||||
|
JSONObject couponJson = null;
|
||||||
|
|
||||||
|
String memberId = null;
|
||||||
|
String couponCode = null;
|
||||||
|
try {
|
||||||
|
//先查订单存在的优惠券
|
||||||
|
for (OrdersEntity orders : ordersEntityList){
|
||||||
|
if (SmartStringUtil.isNotEmpty(orders.getCouponCode())) {
|
||||||
|
couponCode = orders.getCouponCode();
|
||||||
|
}
|
||||||
|
memberId = orders.getMemberId();
|
||||||
|
}
|
||||||
|
|
||||||
|
//根据有没有优惠券来计算商品的总价
|
||||||
|
if(SmartStringUtil.isNotEmpty(couponCode)){
|
||||||
|
CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity();
|
||||||
|
couponGetAllEntity.setMemberId(memberId);
|
||||||
|
couponGetAllEntity.setCouponCode(couponCode);
|
||||||
|
String couponInfo = couponService.couponGetAll(couponGetAllEntity);
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(couponInfo);
|
||||||
|
com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
|
||||||
|
if(jsonArray.size() == 0){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObjectData = (JSONObject) jsonArray.get(0);
|
||||||
|
if (jsonObjectData.getString("udf2") != null){
|
||||||
|
if (!jsonObjectData.getString("udf2").equals("H5")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//得到其它商品的总金额
|
||||||
|
BigDecimal total_Other = new BigDecimal("0");
|
||||||
|
//根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券
|
||||||
|
if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){
|
||||||
|
// BigDecimal total_Coupon = new BigDecimal("0");
|
||||||
|
Map<String, Object> resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, jsonObjectData,total_fee);
|
||||||
|
//ordersEntity = (OrdersEntity) resultMap.get("ordersEntity");
|
||||||
|
orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson");
|
||||||
|
//得到当前能用优惠券的商品总金额
|
||||||
|
BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon");
|
||||||
|
|
||||||
|
//校验当前订单金额小于优惠券金额
|
||||||
|
if(jsonObjectData.getString("couponAmount") != null ){
|
||||||
|
BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount"));
|
||||||
|
if(total_Coupon.compareTo(couponAmount) == -1){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//设置ordersEntity的参数
|
||||||
|
addOrdersEntity(jsonObjectData, ordersEntity);
|
||||||
|
//total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon);
|
||||||
|
//得出指定类用完优惠券后的金额
|
||||||
|
total_Coupon = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), total_Coupon);
|
||||||
|
//得出最终实际的支付金额
|
||||||
|
total_fee = total_Other.add(total_Coupon);
|
||||||
|
}else{//通用类优惠券的实际支付逻辑
|
||||||
|
Map<String, Object> resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee);
|
||||||
|
//ordersEntity = (OrdersEntity) resultMap.get("ordersEntity");
|
||||||
|
orderDatilListJson = (JSONArray) resultMap.get("orderDetailJson");
|
||||||
|
//校验当前订单金额小于优惠券金额
|
||||||
|
if(jsonObjectData.getString("couponAmount") != null ){
|
||||||
|
BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount"));
|
||||||
|
BigDecimal orderAmount = new BigDecimal(ordersEntity.getOrderAmount());
|
||||||
|
if(orderAmount.compareTo(couponAmount) == -1){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//校验当前订单金额小于优惠券金额
|
||||||
|
if(jsonObjectData.getString("couponAmount") != null ){
|
||||||
|
BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount"));
|
||||||
|
if(total_fee.compareTo(couponAmount) == -1){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//设置ordersEntity的参数
|
||||||
|
addOrdersEntity(jsonObjectData, ordersEntity);
|
||||||
|
//total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee);
|
||||||
|
total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()),new BigDecimal(ordersEntity.getOrderAmount()));
|
||||||
|
}
|
||||||
|
}else{//没有优惠券的计算总价逻辑
|
||||||
|
Map<String, Object> resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee);
|
||||||
|
}
|
||||||
|
|
||||||
|
ordersEntity.setMemberId(memberId);
|
||||||
|
ordersEntity.setOrderAmount(StringUtil.toString(total_fee));
|
||||||
|
ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo());
|
||||||
|
ordersEntity.setOrderStatus("0");
|
||||||
|
ordersEntity.setPayType("3");
|
||||||
|
resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson);
|
||||||
|
if (resultMsg.get("code").equals("1")) {
|
||||||
|
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
|
||||||
|
wxPayEntity.setTotal_fee(StringUtil.toString(total_fee));
|
||||||
|
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
|
||||||
|
Map<String, String> returnMap = new HashMap<>();
|
||||||
|
returnMap.put("orderNumber", ordersEntity.getOrderNo());
|
||||||
|
returnMap.put("orderAmount", ordersEntity.getOrderAmount());
|
||||||
|
return ResponseDTO.succData(returnMap, wxpayService.generateQRCode(wxPayEntity));
|
||||||
|
}else if (resultMsg.get("code").equals("0")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg"));
|
||||||
|
}else if (resultMsg.get("code").equals("3")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg"));
|
||||||
|
}else if (resultMsg.get("code").equals("4")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg"));
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
System.out.println(e.getMessage());
|
||||||
|
}
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//提交订单生成逻辑
|
||||||
|
public ResponseDTO<Map<String, String>> createOrderWXH5Info(List<OrdersEntity> ordersEntityList) {
|
||||||
|
Map<String, String> resultMsg = new HashMap<>();
|
||||||
|
BigDecimal total_fee = new BigDecimal("0");
|
||||||
|
WxPayEntity wxPayEntity = new WxPayEntity();
|
||||||
|
JSONArray orderDatilListJson = new JSONArray();
|
||||||
|
OrdersEntity ordersEntity = new OrdersEntity();
|
||||||
|
JSONObject couponJson = null;
|
||||||
|
|
||||||
|
String memberId = null;
|
||||||
|
String couponCode = null;
|
||||||
|
try {
|
||||||
|
//先查订单存在的优惠券
|
||||||
|
for (OrdersEntity orders : ordersEntityList){
|
||||||
|
if (SmartStringUtil.isNotEmpty(orders.getCouponCode())) {
|
||||||
|
couponCode = orders.getCouponCode();
|
||||||
|
}
|
||||||
|
memberId = orders.getMemberId();
|
||||||
|
}
|
||||||
|
|
||||||
|
//根据有没有优惠券来计算商品的总价
|
||||||
|
if(SmartStringUtil.isNotEmpty(couponCode)){
|
||||||
|
CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity();
|
||||||
|
couponGetAllEntity.setMemberId(memberId);
|
||||||
|
couponGetAllEntity.setCouponCode(couponCode);
|
||||||
|
String couponInfo = couponService.couponGetAll(couponGetAllEntity);
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(couponInfo);
|
||||||
|
com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
|
||||||
|
if(jsonArray.size() == 0){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObjectData = (JSONObject) jsonArray.get(0);
|
||||||
|
if (jsonObjectData.getString("udf2") != null){
|
||||||
|
if (!jsonObjectData.getString("udf2").equals("H5")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//得到其它商品的总金额
|
||||||
|
BigDecimal total_Other = new BigDecimal("0");
|
||||||
|
//根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券
|
||||||
|
if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){
|
||||||
|
// BigDecimal total_Coupon = new BigDecimal("0");
|
||||||
|
Map<String, Object> resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, jsonObjectData,total_fee);
|
||||||
|
//ordersEntity = (OrdersEntity) resultMap.get("ordersEntity");
|
||||||
|
orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson");
|
||||||
|
//得到当前能用优惠券的商品总金额
|
||||||
|
BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon");
|
||||||
|
|
||||||
|
//校验当前订单金额小于优惠券金额
|
||||||
|
if(jsonObjectData.getString("couponAmount") != null ){
|
||||||
|
BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount"));
|
||||||
|
if(total_Coupon.compareTo(couponAmount) == -1){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//设置ordersEntity的参数
|
||||||
|
addOrdersEntity(jsonObjectData, ordersEntity);
|
||||||
|
//total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon);
|
||||||
|
//得出指定类用完优惠券后的金额
|
||||||
|
total_Coupon = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), total_Coupon);
|
||||||
|
//得出最终实际的支付金额
|
||||||
|
total_fee = total_Other.add(total_Coupon);
|
||||||
|
}else{//通用类优惠券的实际支付逻辑
|
||||||
|
Map<String, Object> resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee);
|
||||||
|
//ordersEntity = (OrdersEntity) resultMap.get("ordersEntity");
|
||||||
|
orderDatilListJson = (JSONArray) resultMap.get("orderDetailJson");
|
||||||
|
//校验当前订单金额小于优惠券金额
|
||||||
|
if(jsonObjectData.getString("couponAmount") != null ){
|
||||||
|
BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount"));
|
||||||
|
BigDecimal orderAmount = new BigDecimal(ordersEntity.getOrderAmount());
|
||||||
|
if(orderAmount.compareTo(couponAmount) == -1){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//校验当前订单金额小于优惠券金额
|
||||||
|
if(jsonObjectData.getString("couponAmount") != null ){
|
||||||
|
BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount"));
|
||||||
|
if(total_fee.compareTo(couponAmount) == -1){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//设置ordersEntity的参数
|
||||||
|
addOrdersEntity(jsonObjectData, ordersEntity);
|
||||||
|
//total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee);
|
||||||
|
total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()),new BigDecimal(ordersEntity.getOrderAmount()));
|
||||||
|
}
|
||||||
|
}else{//没有优惠券的计算总价逻辑
|
||||||
|
Map<String, Object> resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee);
|
||||||
|
}
|
||||||
|
|
||||||
|
ordersEntity.setMemberId(memberId);
|
||||||
|
ordersEntity.setOrderAmount(StringUtil.toString(total_fee));
|
||||||
|
ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo());
|
||||||
|
ordersEntity.setOrderStatus("0");
|
||||||
|
ordersEntity.setPayType("3");
|
||||||
|
resultMsg = generateOrder(ordersEntity, orderDatilListJson);
|
||||||
|
if (resultMsg.get("code").equals("1")) {
|
||||||
|
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
|
||||||
|
wxPayEntity.setTotal_fee(StringUtil.toString(total_fee));
|
||||||
|
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
|
||||||
|
Map<String, String> returnMap = new HashMap<>();
|
||||||
|
returnMap.put("orderNumber", ordersEntity.getOrderNo());
|
||||||
|
returnMap.put("orderAmount", ordersEntity.getOrderAmount());
|
||||||
|
return ResponseDTO.succData(returnMap,wxpayService.dounifiedOrder(wxPayEntity));
|
||||||
|
}else if (resultMsg.get("code").equals("0")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg"));
|
||||||
|
}else if (resultMsg.get("code").equals("3")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg"));
|
||||||
|
}else if (resultMsg.get("code").equals("4")){
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg"));
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
System.out.println(e.getMessage());
|
||||||
|
}
|
||||||
|
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//计算无优惠券、通用券商品总价等信息
|
||||||
|
private Map<String, Object> addOrdersEntityInfo(List<OrdersEntity> ordersEntityList, OrdersEntity ordersEntity, JSONObject couponJson, BigDecimal total_fee) throws Exception {
|
||||||
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
|
JSONArray orderDatilListJson = new JSONArray();
|
||||||
|
OrderAddress orderAddress = new OrderAddress();
|
||||||
|
StringBuffer productId = new StringBuffer();
|
||||||
|
StringBuffer productName = new StringBuffer();
|
||||||
|
//BigDecimal total_fee = new BigDecimal("0");
|
||||||
|
BigDecimal total_Coupon = new BigDecimal("0");
|
||||||
|
String[] productCodes = null;
|
||||||
|
Boolean isExist = false;
|
||||||
|
double basePoint = 0 ;
|
||||||
|
String mobile = "";
|
||||||
|
int buyCount = 0;
|
||||||
|
|
||||||
|
//判断是否属于指定类
|
||||||
|
if(couponJson != null && SmartStringUtil.isNotBlank(couponJson.getString("productCodes"))){
|
||||||
|
isExist = true;
|
||||||
|
productCodes = couponJson.getString("productCodes").toString().split(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (OrdersEntity order : ordersEntityList) {
|
||||||
|
//从crm获取商品的json数据信息
|
||||||
|
JSONObject goodsObject = gainGoodsObject(order);
|
||||||
|
//删除购物车信息
|
||||||
|
cartService.cancelProduct(order.getMemberId(), order.getProductCode());
|
||||||
|
//拼接商品数据信息得到
|
||||||
|
splicingOrderDetail(order, goodsObject, orderDatilListJson);
|
||||||
|
//设置订单地址信息
|
||||||
|
addOrderAddress(orderAddress, order);
|
||||||
|
//筛选能用当前优惠券的商品3
|
||||||
|
if(isExist && Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){
|
||||||
|
//计算商品价格、数量、basepoint相关信息
|
||||||
|
total_Coupon = calculationTotal(order, goodsObject, total_Coupon);
|
||||||
|
}else{
|
||||||
|
//计算商品价格、数量、basepoint相关信息
|
||||||
|
total_fee = calculationTotal(order, goodsObject, total_fee);
|
||||||
|
}
|
||||||
|
buyCount = buyCount + order.getBuyCount();
|
||||||
|
basePoint = basePoint + order.getBasePoint();
|
||||||
|
productId.append(order.getProductCode() + ",");
|
||||||
|
productName.append(order.getProductName() + ",");
|
||||||
|
mobile = order.getPhoneNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
ordersEntity.setOrderAddress(orderAddress);
|
||||||
|
ordersEntity.setCouponAmount(ordersEntity.getCouponAmount());
|
||||||
|
ordersEntity.setOrderAmount(StringUtil.toString(total_fee));
|
||||||
|
ordersEntity.setBuyCount(buyCount);
|
||||||
|
ordersEntity.setBasePoint(basePoint);
|
||||||
|
ordersEntity.setPhoneNumber(mobile);
|
||||||
|
ordersEntity.setProductCode(productId.substring(0, productId.length()-1));
|
||||||
|
ordersEntity.setProductName(productName.substring(0, productName.length()-1));
|
||||||
|
map.put("ordersEntity", ordersEntity);
|
||||||
|
map.put("orderDetailJson", orderDatilListJson);
|
||||||
|
map.put("total_Coupon", "total_Coupon");
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JSONObject gainGoodsObject(OrdersEntity appointCoupon) throws Exception {
|
||||||
|
//存储orderDetailList
|
||||||
|
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
|
||||||
|
productMasterQueryEntity.setProductCode(appointCoupon.getProductCode());
|
||||||
|
String goodsStr = goodService.productQuery(productMasterQueryEntity);
|
||||||
|
com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr);
|
||||||
|
JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0);
|
||||||
|
return goodsObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addOrdersEntity(JSONObject jsonObjectData, OrdersEntity ordersEntity) {
|
||||||
|
ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount"));
|
||||||
|
ordersEntity.setCouponCode(jsonObjectData.getString("couponCode"));
|
||||||
|
ordersEntity.setCouponName(jsonObjectData.getString("couponName"));
|
||||||
|
ordersEntity.setCouponId(jsonObjectData.getString("couponId"));
|
||||||
|
ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private BigDecimal calculationTotal(OrdersEntity appointCoupon, JSONObject goodsObject, BigDecimal total_other) {
|
||||||
|
//total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount();
|
||||||
|
BigDecimal ecPrice = new BigDecimal(goodsObject.getString("ecPrice"));
|
||||||
|
BigDecimal buyCounts = new BigDecimal(appointCoupon.getBuyCount());
|
||||||
|
total_other = total_other.add(ecPrice.multiply(buyCounts)) ;
|
||||||
|
return total_other;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addOrderAddress(OrderAddress orderAddress, OrdersEntity appointCoupon) {
|
||||||
|
orderAddress.setAddressCityName(appointCoupon.getOrderAddress().getAddressCityName());
|
||||||
|
orderAddress.setAddressCountyName(appointCoupon.getOrderAddress().getAddressCountyName());
|
||||||
|
orderAddress.setAddressDetailInfo(appointCoupon.getOrderAddress().getAddressDetailInfo());
|
||||||
|
orderAddress.setAddressPhoneNumber(appointCoupon.getOrderAddress().getAddressPhoneNumber());
|
||||||
|
orderAddress.setAddressUserName(appointCoupon.getOrderAddress().getAddressUserName());
|
||||||
|
orderAddress.setAddressProvinceName(appointCoupon.getOrderAddress().getAddressProvinceName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void splicingOrderDetail(OrdersEntity appointCoupon, JSONObject goodsObject, JSONArray orderDatilListJson) {
|
||||||
|
OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity();
|
||||||
|
orderDatilListEntity.setProductName(goodsObject.getString("productName"));
|
||||||
|
orderDatilListEntity.setPcs(appointCoupon.getBuyCount());
|
||||||
|
orderDatilListEntity.setProductCode(goodsObject.getString("productCode"));
|
||||||
|
orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice"));
|
||||||
|
orderDatilListJson.add(orderDatilListEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user