1
0
Kaynağa Gözat

小程序部分退款前后端修改

hyq 6 yıl önce
ebeveyn
işleme
e4c69c7575

+ 6 - 3
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -204,7 +204,6 @@ public class OrderController {
     @RequiresPermissions(value = {"order:refund"})
     @RequestMapping(value = "cancel", method = RequestMethod.POST)
     public Object cancel(Long orderId) {
-        //
         OrderEntity orderInfo = orderService.queryObject(orderId);
         if (null == orderInfo) {
             return R.error("订单不存在");
@@ -213,20 +212,24 @@ public class OrderController {
                 || orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
             return R.error("订单已退款");
         }
+        Double totalActualPrice = orderService.getTotalActualPrice(orderInfo.getMerchOrderSn());
+        if(totalActualPrice == null){
+            totalActualPrice = 0d;
+        }
 
         if (orderInfo.getOrderStatus() != 0) {
             // todo 退款
 //          WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
 //                orderInfo.getActualPrice().doubleValue(), refundMoney.doubleValue());
             WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getMerchOrderSn().toString(),
-                    orderInfo.getActualPrice().doubleValue(), orderInfo.getActualPrice().doubleValue());
+                    totalActualPrice, orderInfo.getActualPrice().doubleValue());
             if (result.getResult_code().equals("SUCCESS")) {
                 orderService.cancelOrder(orderInfo,result);
             }else{
                 OrderRefundEntity mallOrderRefund = orderRefundService.queryObjectByOrderId(orderInfo.getId());
                 OrderRefundEntity orderRefund = new OrderRefundEntity();
                 orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
-                orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().multiply(new BigDecimal(100)).doubleValue()));
+                orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
                 orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
                 orderRefund.setModTime(new Date());
                 if(mallOrderRefund !=null){

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java

@@ -60,4 +60,6 @@ public interface OrderDao extends BaseDao<OrderEntity> {
      * @return
      */
     int getPayedOrderCount();
+
+    Double getTotalActualPrice(@Param("merchOrderSn")String merchOrderSn);
 }

+ 3 - 1
kmall-admin/src/main/java/com/kmall/admin/entity/ProductStoreRelaEntity.java

@@ -1,5 +1,7 @@
 package com.kmall.admin.entity;
 
+import com.kmall.common.utils.Constant;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -50,7 +52,7 @@ public class ProductStoreRelaEntity implements Serializable {
     /**
      * 销售量
      */
-    private BigDecimal sellVolume = new BigDecimal(0);
+    private BigDecimal sellVolume = Constant.ZERO;
 
     // 翻译
     private String storeName;

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -77,4 +77,6 @@ public interface OrderService {
     Map getLogistics(Long id);
 
     OrderEntity queryInfos(Long id);
+
+    Double getTotalActualPrice(String merchOrderSn);
 }

+ 10 - 6
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -7,6 +7,7 @@ import com.kmall.admin.service.OrderService;
 import com.kmall.api.contants.Dict;
 import com.kmall.api.service.merch.OmsMerchPropertiesBuilder;
 import com.kmall.common.service.print.ticket.PrintTicketPropertiesBuilder;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.print.ticket.TicketPrintUtil;
 import com.kmall.common.utils.print.ticket.item.*;
 import com.kmall.common.utils.RRException;
@@ -50,6 +51,10 @@ public class OrderServiceImpl implements OrderService {
     public OrderEntity queryObject(Long id) {
         return orderDao.queryObject(id);
     }
+    @Override
+    public Double getTotalActualPrice(String merchOrderSn) {
+        return orderDao.getTotalActualPrice(merchOrderSn);
+    }
 
     @Override
     public List<OrderEntity> queryList(Map<String, Object> map) {
@@ -91,9 +96,8 @@ public class OrderServiceImpl implements OrderService {
 
         OrderRefundEntity orderRefund = new OrderRefundEntity();
         orderRefund.setRefundId(result.getRefund_id());
-        orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
         orderRefund.setOutRefundNo(result.getOut_refund_no());
-        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())));
+        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
         orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
         orderRefund.setModTime(new Date());
 
@@ -117,11 +121,11 @@ public class OrderServiceImpl implements OrderService {
         for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
             ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao.queryByStoreIdProductId(Long.valueOf(order.getStoreId()), Long.valueOf(orderGoodsEntity.getProductId()));
             if (null == storeRelaEntity || null == storeRelaEntity.getSellVolume()) {
-                storeRelaEntity.setSellVolume(new BigDecimal(0));
+                storeRelaEntity.setSellVolume(Constant.ZERO);
             }
             BigDecimal sellVolume = storeRelaEntity.getSellVolume().subtract(new BigDecimal(orderGoodsEntity.getNumber()));//销售量
-            if (sellVolume.compareTo(new BigDecimal(0)) < 0) {
-                sellVolume = new BigDecimal(0);
+            if (sellVolume.compareTo(Constant.ZERO) < 0) {
+                sellVolume = Constant.ZERO;
             }
             storeRelaEntity.setSellVolume(sellVolume);
             if (null == storeRelaEntity.getStockNum()) {
@@ -197,7 +201,7 @@ public class OrderServiceImpl implements OrderService {
 
         // 商品信息
         Integer goodsTotal = 0; // 商品总个数
-        BigDecimal total = new BigDecimal(0); // 商品总计
+        BigDecimal total = Constant.ZERO; // 商品总计
         List<Goods> goodsList = new ArrayList<>();
         for (OrderGoodsEntity orderGoods : orderGoodsEntityList) {
             goodsTotal += orderGoods.getNumber();

+ 5 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml

@@ -64,6 +64,11 @@
         where o.activity_id = #{activityId} and o.order_type = #{orderType}
     </select>
 
+
+    <select id="getTotalActualPrice" resultType="java.lang.Double">
+        select sum(a.actual_price) 'totalActualPrice' from mall_order a where merch_order_sn = #{merchOrderSn}
+    </select>
+
     <select id="queryList" resultType="com.kmall.admin.entity.OrderEntity">
         select o.*,u.username as username
         from mall_order o

+ 2 - 1
kmall-api/src/main/java/com/kmall/api/api/ApiCartController.java

@@ -6,6 +6,7 @@ import com.kmall.api.contants.Dict;
 import com.kmall.api.entity.*;
 import com.kmall.api.service.*;
 import com.kmall.api.util.ApiBaseAction;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.MapUtils;
 import com.qiniu.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -590,7 +591,7 @@ public class ApiCartController extends ApiBaseAction {
 
         }
         // 计算优惠券 todo 暂时不计算全场金额满减
-        BigDecimal fullCutCouponDec = new BigDecimal(0);
+        BigDecimal fullCutCouponDec = Constant.ZERO;
         Long fullCutCouponId = 0L;
         /*CouponVo fullSubCoupon = apiCouponService.matchFullSub(loginUser.getId(), goodsTotalPrice);
         if (null != fullSubCoupon && null != fullSubCoupon.getId()) {

+ 2 - 1
kmall-api/src/main/java/com/kmall/api/api/ApiGoodsGroupOpenController.java

@@ -6,6 +6,7 @@ import com.kmall.api.annotation.LoginUser;
 import com.kmall.api.entity.*;
 import com.kmall.api.service.*;
 import com.kmall.api.util.ApiBaseAction;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.DateUtils;
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -302,7 +303,7 @@ public class ApiGoodsGroupOpenController extends ApiBaseAction {
     public Object groupcheck(@LoginUser UserVo loginUser, Long groupId, Long productId, Integer number) {
         Map<String, Object> resultObj = new HashMap();
         // 默认全国包邮
-        BigDecimal freightPrice = new BigDecimal(0);
+        BigDecimal freightPrice = Constant.ZERO;
         Long storeId = getStoreId();
         //
         GoodsGroupVo groupVo = apiGoodsGroupService.queryObjectByStoreId(groupId, storeId);

+ 3 - 2
kmall-api/src/main/java/com/kmall/api/api/ApiOrderController.java

@@ -12,6 +12,7 @@ import com.kmall.api.service.*;
 import com.kmall.api.service.express.kdn.ApiKdniaoService;
 import com.kmall.api.util.ApiBaseAction;
 import com.kmall.api.util.ApiPageUtils;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.wechat.WechatRefundApiResult;
 import com.kmall.common.utils.wechat.WechatUtil;
@@ -194,7 +195,7 @@ public class ApiOrderController extends ApiBaseAction {
         Map resultObj = new HashMap();
 
         List<OrderVo> orderVoList = orderService.queryObjectByIdList(orderIdList);
-        BigDecimal actualPrice = new BigDecimal(0);
+        BigDecimal actualPrice = Constant.ZERO;
 
         for (OrderVo orderInfo:orderVoList) {
             if (null == orderInfo) {
@@ -395,7 +396,7 @@ public class ApiOrderController extends ApiBaseAction {
             if(list.size()>1){//多条订单
                 orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_2.getItem()));//部分退款
             }
-            orderRefund.setRefundMoney(orderInfo.getActual_price().multiply(new BigDecimal(100)));
+            orderRefund.setRefundMoney(orderInfo.getActual_price());
 
             if(mallOrderRefund !=null){
                 orderRefund.setId(mallOrderRefund.getId());

+ 8 - 7
kmall-api/src/main/java/com/kmall/api/api/ApiPayController.java

@@ -9,6 +9,7 @@ import com.kmall.api.service.*;
 import com.kmall.api.service.pay.wxpay.WxPayPropertiesBuilder;
 import com.kmall.api.util.ApiBaseAction;
 import com.kmall.common.utils.CharUtil;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.MapUtils;
 import com.kmall.common.utils.XmlUtil;
 import com.kmall.common.utils.wechat.AESUtil;
@@ -70,7 +71,7 @@ public class ApiPayController extends ApiBaseAction {
         for(int i=0;i<orderIds.length;i++){
             orderIdList.add(orderIds[i]);
         }
-        BigDecimal actual_price = new BigDecimal(0);
+        BigDecimal actual_price = Constant.ZERO;
         List<OrderVo> orderVoList = orderService.queryObjectByIdList(orderIdList);
         List<OrderProcessRecordEntity> processRecordEntityList = new ArrayList<>();
 
@@ -125,8 +126,8 @@ public class ApiPayController extends ApiBaseAction {
                 parame.put("body", body);// 商品描述
             }
             //支付金额
-//            parame.put("total_fee", orderInfo.getActual_price().multiply(new BigDecimal(100)).intValue()));//todo 消费金额
-            parame.put("total_fee", actual_price.multiply(new BigDecimal(100)).intValue());// 消费金额
+//            parame.put("total_fee", orderInfo.getActual_price().multiply(Constant.ONE_HUNDRED).intValue()));//todo 消费金额
+            parame.put("total_fee", actual_price.multiply(Constant.ONE_HUNDRED).intValue());// 消费金额
             //parame.put("notify_url", ResourceUtil.getConfigByName("wx.notifyUrl"));// 回调地址
             parame.put("notify_url", WxPayPropertiesBuilder.instance().getNotifyUrl());// 回调地址
             //parame.put("trade_type", ResourceUtil.getConfigByName("wx.tradeType"));// 交易类型APP
@@ -257,9 +258,9 @@ public class ApiPayController extends ApiBaseAction {
     }
 
     /**
-     * 订单退款请求
+     * 订单退款请求 todo 小程序用户暂不给退款
      */
-    @GetMapping("refund")
+    /*@GetMapping("refund")
     public Object refund(@LoginUser UserVo loginUser, Long orderId) {
         //
         OrderVo orderInfo = orderService.queryObject(orderId);
@@ -287,7 +288,7 @@ public class ApiPayController extends ApiBaseAction {
             MallOrderRefund mallOrderRefund = mallOrderRefundMapper.queryObjectByOrderId(orderInfo.getId()+"");
             MallOrderRefund orderRefund = new MallOrderRefund();
             orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
-            orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActual_price().multiply(new BigDecimal(100)).doubleValue()));
+            orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActual_price().multiply(Constant.ONE_HUNDRED).doubleValue()));
             orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_3.getItem()));
             orderRefund.setModTime(new Date());
             if(mallOrderRefund !=null){
@@ -305,7 +306,7 @@ public class ApiPayController extends ApiBaseAction {
 
             return toResponsObject(400, "退款失败"+result.getErr_code_des(), "");
         }
-    }
+    }*/
 
 
     /**

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/api/ApiSmsController.java

@@ -55,7 +55,7 @@ public class ApiSmsController {
         smsLog.setContent(params.get("content"));
         String stime = params.get("stime");
         if (StringUtils.isNotEmpty(stime)) {
-            smsLog.setStime(DateUtils.convertStringToDate(stime,DateUtils.DATE_PATTERN));
+            smsLog.setStime(DateUtils.strToDate(stime));
         }
         SysSmsLogEntity sysSmsLogEntity = smsLogService.sendSms(smsLog);
         return R.ok().put("result", sysSmsLogEntity);

+ 4 - 3
kmall-api/src/main/java/com/kmall/api/service/ApiCouponService.java

@@ -6,6 +6,7 @@ import com.kmall.api.dao.ApiUserCouponMapper;
 import com.kmall.api.entity.CouponVo;
 import com.kmall.api.entity.UserCouponVo;
 import com.kmall.common.utils.CharUtil;
+import com.kmall.common.utils.Constant;
 import com.qiniu.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -120,7 +121,7 @@ public class ApiCouponService {
                 if (!optimal) {
                     continue;
                 }
-                if (difDec.doubleValue() > 0.0 && couponVo.getType_money().compareTo(new BigDecimal(0)) == 0) {
+                if (difDec.doubleValue() > 0.0 && couponVo.getType_money().compareTo(Constant.ZERO) == 0) {
                     couponVo.setMsg("满¥" + couponVo.getMin_goods_amount() + "元免配送费,还差" + difDec + "元");
                     couponVo.setType(1);
                 } else if (couponVo.getType_money().doubleValue() > 0.0) {
@@ -184,7 +185,7 @@ public class ApiCouponService {
         List<CouponVo> couponVos = apiCouponMapper.queryList(couponParam);
         if (null != couponVos && couponVos.size() > 0) {
             CouponVo fullCutVo = new CouponVo();
-            BigDecimal fullCutDec = new BigDecimal(0);
+            BigDecimal fullCutDec = Constant.ZERO;
             for (CouponVo couponVo : couponVos) {
                 BigDecimal difDec = couponVo.getMin_goods_amount().subtract(goodsTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP);
                 if (difDec.doubleValue() < 0.0 && fullCutDec.compareTo(couponVo.getType_money()) < 0) {
@@ -220,7 +221,7 @@ public class ApiCouponService {
         List<CouponVo> couponVos = apiCouponMapper.queryList(couponParam);
         if (null != couponVos && couponVos.size() > 0) {
             CouponVo fullCutVo = new CouponVo();
-            BigDecimal fullCutDec = new BigDecimal(0);
+            BigDecimal fullCutDec = Constant.ZERO;
             BigDecimal minAmount = new BigDecimal(100000);
             for (CouponVo couponVo : couponVos) {
                 BigDecimal difDec = couponVo.getMin_goods_amount().subtract(goodsTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP);

+ 5 - 4
kmall-api/src/main/java/com/kmall/api/service/ApiGoodsGroupOpenService.java

@@ -3,6 +3,7 @@ package com.kmall.api.service;
 import com.kmall.api.dao.*;
 import com.kmall.api.entity.*;
 import com.kmall.api.util.CommonUtil;
+import com.kmall.common.utils.Constant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -142,9 +143,9 @@ public class ApiGoodsGroupOpenService {
         orderInfo.setShipping_status(0);
         orderInfo.setPay_status(0);
         orderInfo.setShipping_id(0L);
-        orderInfo.setShipping_fee(new BigDecimal(0));
+        orderInfo.setShipping_fee(Constant.ZERO);
         orderInfo.setIntegral(0);
-        orderInfo.setIntegral_money(new BigDecimal(0));
+        orderInfo.setIntegral_money(Constant.ZERO);
         orderInfo.setOrder_type("2"); // 订单类型 1:普通订单 2:团购订单
         orderInfo.setActivity_id(openDetailVo.getId());
         orderInfo.setDelivery_remark(delivery_remark);
@@ -232,9 +233,9 @@ public class ApiGoodsGroupOpenService {
         orderInfo.setShipping_status(0);
         orderInfo.setPay_status(0);
         orderInfo.setShipping_id(0L);
-        orderInfo.setShipping_fee(new BigDecimal(0));
+        orderInfo.setShipping_fee(Constant.ZERO);
         orderInfo.setIntegral(0);
-        orderInfo.setIntegral_money(new BigDecimal(0));
+        orderInfo.setIntegral_money(Constant.ZERO);
         orderInfo.setOrder_type("2"); // 订单类型 1:普通订单 2:团购订单
         orderInfo.setActivity_id(openDetailVo.getId());
         orderInfo.setDelivery_remark(delivery_remark);

+ 6 - 5
kmall-api/src/main/java/com/kmall/api/service/ApiOrderService.java

@@ -11,6 +11,7 @@ import com.kmall.common.entity.FormIdsEntity;
 import com.kmall.common.entity.TemplateConfVo;
 import com.kmall.common.service.FormIdsService;
 import com.kmall.common.service.print.ticket.PrintTicketPropertiesBuilder;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.DateUtils;
 import com.kmall.common.utils.RRException;
 import com.kmall.common.utils.StringUtils;
@@ -337,7 +338,7 @@ public class ApiOrderService {
         if (StringUtils.isNullOrEmpty(delivery_remark)) {
             delivery_remark = "尽快送达";
         }
-        BigDecimal fullCutCouponDec = new BigDecimal(0);
+        BigDecimal fullCutCouponDec = Constant.ZERO;
         BigDecimal goodsTotalPrice = new BigDecimal(0.00);
         for (CartVo goodsItem : checkedGoodsList) {
             if(bizType.equalsIgnoreCase(goodsItem.getGoodsBizType())){
@@ -425,9 +426,9 @@ public class ApiOrderService {
         orderInfo.setShipping_status(0);
         orderInfo.setPay_status(0);
         orderInfo.setShipping_id(0L);
-        orderInfo.setShipping_fee(new BigDecimal(0));
+        orderInfo.setShipping_fee(Constant.ZERO);
         orderInfo.setIntegral(0);
-        orderInfo.setIntegral_money(new BigDecimal(0));
+        orderInfo.setIntegral_money(Constant.ZERO);
         orderInfo.setCreateTime(new Date());
         orderInfo.setModTime(new Date());
         orderInfo.setPayMobile(loginUser.getMobile());
@@ -471,7 +472,7 @@ public class ApiOrderService {
         BigDecimal goodsTotal = goodsItem.getRetail_price().multiply(number);//单商品总价
         BigDecimal rate = goodsTotal.divide(orderInfo.getGoods_price(),2, BigDecimal.ROUND_HALF_UP);//单商品总价/订单总价(不含运费、不含优惠券)
         BigDecimal freightPrice = BigDecimal.valueOf(orderInfo.getFreight_price());
-        BigDecimal settlePrice = new BigDecimal(0);
+        BigDecimal settlePrice = Constant.ZERO;
         if(orderInfo.getFreight_price()!=0 && !"0".equalsIgnoreCase(orderInfo.getCoupon_price()+"")){
             //运费-优惠券
             BigDecimal rateTotal = freightPrice.subtract(orderInfo.getCoupon_price());
@@ -697,7 +698,7 @@ public class ApiOrderService {
 
                 // 商品信息
                 Integer goodsTotal = 0; // 商品总个数
-                BigDecimal total = new BigDecimal(0); // 商品总计
+                BigDecimal total = Constant.ZERO; // 商品总计
                 List<Goods> goodsList = new ArrayList<>();
                 for (OrderGoodsVo orderGoods : orderGoodsEntityList) {
                     goodsTotal += orderGoods.getNumber();

+ 13 - 6
kmall-api/src/main/java/com/kmall/api/service/ApiPayService.java

@@ -6,6 +6,7 @@ import com.kmall.api.entity.*;
 import com.kmall.api.service.pay.wxpay.WxPayPropertiesBuilder;
 import com.kmall.common.entity.FormIdsEntity;
 import com.kmall.common.service.FormIdsService;
+import com.kmall.common.utils.Constant;
 import com.kmall.common.utils.DateUtils;
 import com.kmall.common.utils.MapUtils;
 import com.kmall.common.utils.wechat.WechatRefundApiResult;
@@ -124,7 +125,7 @@ public class ApiPayService {
         if(orderVoList != null && orderVoList.size()>0) {
             for(OrderVo orderInfo:orderVoList) {
                 //校验返回的订单金额是否与商户侧的订单金额一致
-                String actualPrice = String.valueOf(orderInfo.getActual_price().multiply(new BigDecimal(100)));
+                String actualPrice = String.valueOf(orderInfo.getActual_price().multiply(Constant.ONE_HUNDRED));
                 if(!total_fee.equalsIgnoreCase(actualPrice)){//不一致
                     MallOrderExceptionRecord mallOrderExceptionRecord = new MallOrderExceptionRecord();
                     mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
@@ -222,7 +223,7 @@ public class ApiPayService {
         orderRefund.setRefundId(result.getRefund_id());
         orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
         orderRefund.setOutRefundNo(result.getOut_refund_no());
-        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())));
+        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
         orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
         orderRefund.setModTime(new Date());
 
@@ -250,8 +251,8 @@ public class ApiPayService {
                 storeRelaEntity.setSellVolume(0);
             }
             BigDecimal sellVolume = new BigDecimal(storeRelaEntity.getSellVolume()).subtract(new BigDecimal(orderGoodsEntity.getNumber()));//销售量
-            if (sellVolume.compareTo(new BigDecimal(0)) < 0) {
-                sellVolume = new BigDecimal(0);
+            if (sellVolume.compareTo(Constant.ZERO) < 0) {
+                sellVolume = Constant.ZERO;
             }
             storeRelaEntity.setSellVolume(Integer.parseInt(String.valueOf(sellVolume)));
             if (null == storeRelaEntity.getStockNum()) {
@@ -288,7 +289,7 @@ public class ApiPayService {
                         orderRefund.setRefundTime(successTime);//退款成功时间
                         orderRefund.setOutRefundNo(refundApiResult.getOut_refund_no());
                         orderRefund.setRefundId(refundApiResult.getRefund_id());
-                        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(refundApiResult.getRefund_fee())));
+                        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(refundApiResult.getRefund_fee())).divide(Constant.ONE_HUNDRED));
                         if (refundApiResult.getRefund_status().equalsIgnoreCase("SUCCESS")) {
                             orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
                             orderRefund.setWechatRefundStatusDes("退款成功");
@@ -302,7 +303,13 @@ public class ApiPayService {
                             orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
                             orderRefund.setWechatRefundStatusDes("退款异常");
                         }
-                        orderRefund.setRefundRecvAccout(refundApiResult.getRefund_recv_accout());
+                        String account = refundApiResult.getRefund_recv_accout();
+                        try{
+                            account = new String(account.getBytes("UTF-8"), "ISO-8859-1");
+                        }catch (Exception e){
+                            logger.error("转换异常:",e);
+                        }
+                        orderRefund.setRefundRecvAccout(account);
                         orderRefund.setId(mallOrderRefund.getId());
                         mallOrderRefundMapper.update(orderRefund);//更新订单退款信息
 

+ 6 - 0
kmall-common/src/main/java/com/kmall/common/utils/Constant.java

@@ -1,5 +1,7 @@
 package com.kmall.common.utils;
 
+import java.math.BigDecimal;
+
 /**
  * 常量
  *
@@ -14,6 +16,10 @@ public class Constant {
     public static final int SUPER_ADMIN = 1;
 
     public static final String USE_DATA = "MYSQL";//ORACLE、MYSQL
+
+    public static final BigDecimal ONE_HUNDRED = new BigDecimal("100");
+
+    public static final BigDecimal ZERO = new BigDecimal("0");
     /**
      * 菜单类型
      *

+ 3 - 6
kmall-common/src/main/java/com/kmall/common/utils/wechat/WechatUtil.java

@@ -3,10 +3,7 @@ package com.kmall.common.utils.wechat;
 import com.alibaba.druid.support.logging.Log;
 import com.alibaba.druid.support.logging.LogFactory;
 import com.kmall.common.service.pay.wxpay.CommonWxPayPropertiesBuilder;
-import com.kmall.common.utils.CharUtil;
-import com.kmall.common.utils.MapUtils;
-import com.kmall.common.utils.ResourceUtil;
-import com.kmall.common.utils.XmlUtil;
+import com.kmall.common.utils.*;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
@@ -92,8 +89,8 @@ public class WechatUtil {
         params.put("nonce_str", CharUtil.getRandomString(16));//随机字符串,不长于32位。推荐随机数生成算法
         params.put("out_trade_no", out_trade_no);//商户传给微信的订单号
         params.put("out_refund_no", System.currentTimeMillis()+"");//商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
-        params.put("total_fee", bdOrderMoney.multiply(new BigDecimal(100)).intValue());//订单总金额,单位为分,只能为整数
-        params.put("refund_fee", bdRefundMoney.multiply(new BigDecimal(100)).intValue());//退款总金额,订单总金额,单位为分,只能为整数
+        params.put("total_fee", bdOrderMoney.multiply(Constant.ONE_HUNDRED).intValue());//订单总金额,单位为分,只能为整数
+        params.put("refund_fee", bdRefundMoney.multiply(Constant.ONE_HUNDRED).intValue());//退款总金额,订单总金额,单位为分,只能为整数
         params.put("op_user_id", CommonWxPayPropertiesBuilder.instance().getMchId());//操作员帐号, 默认为商户号
         params.put("notify_url", CommonWxPayPropertiesBuilder.instance().getRefundNotifyUrl());