Parcourir la source

商城代码,订单支付

chenguo il y a 6 jours
Parent
commit
9fae95eb30

+ 3 - 0
fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java

@@ -9,6 +9,9 @@ public interface IErpOrderService
 {
 
     ErpOrderResponse addOrder(ErpOrder order);
+
+    ErpOrderResponse addOrderScrm(ErpOrder order);
+
     //用户发起退款,然后后台审核通过后,提交退款单
     ErpOrderResponse refundOrder(ErpRefundOrder order);
     ErpDeliverysResponse getDeliver(ErpDeliverysRequest param);

+ 158 - 1
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -19,7 +19,11 @@ import com.fs.his.mapper.FsStoreAfterSalesMapper;
 import com.fs.his.service.IFsStoreOrderItemService;
 import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.service.IFsStoreProductService;
-import com.fs.his.vo.FsStoreOrderItemVO;
+import com.fs.hisStore.domain.FsStoreOrderItemScrm;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.service.IFsStoreOrderItemScrmService;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
+import com.fs.hisStore.vo.FsStoreOrderItemVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.util.Asserts;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,11 +45,16 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
     @Autowired
     private IFsStoreOrderService fsStoreOrderService;
 
+    @Autowired
+    private IFsStoreOrderScrmService fsStoreOrderScrmService;
+
     @Autowired
     private FsJstAftersalePushMapper fsJstAftersalePushMapper;
 
     @Autowired
     private IFsStoreOrderItemService fsStoreOrderItemService;
+    @Autowired
+    private IFsStoreOrderItemScrmService fsStoreOrderItemScrmService;
 
     @Autowired
     private IFsStoreProductService fsStoreProductService;
@@ -207,6 +216,154 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         return erpOrderResponse;
     }
 
+    @Override
+    public ErpOrderResponse addOrderScrm(ErpOrder order) {
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+
+        ErpOrderPayment erpOrderPayment = order.getPayments().get(0);
+
+        ShopOrderDTO shopOrderDTO = new ShopOrderDTO();
+
+        shopOrderDTO.setShopId(Long.valueOf(order.getShop_code()));
+        shopOrderDTO.setSoId(order.getPlatform_code());
+        shopOrderDTO.setOrderDate(order.getDeal_datetime());
+        // 待发货
+        shopOrderDTO.setShopStatus(OrderStatusEnum.WAIT_SELLER_SEND_GOODS.name());
+        // 买家账号
+        shopOrderDTO.setShopBuyerId(order.getBuyer_account());
+        // 收货人省份
+        shopOrderDTO.setReceiverState(order.getReceiver_province());
+        // 收货人城市
+        shopOrderDTO.setReceiverCity(order.getReceiver_city());
+        // 收货人区域
+        shopOrderDTO.setReceiverDistrict(order.getReceiver_district());
+        // 收货人详细地址
+        shopOrderDTO.setReceiverAddress(order.getReceiver_address());
+        // 收货人详细地址
+        shopOrderDTO.setReceiverName(order.getReceiver_name());
+        // 收货人电话
+        shopOrderDTO.setReceiverPhone(order.getReceiver_mobile());
+        // 支付金额
+        shopOrderDTO.setPayAmount(erpOrderPayment.getPayment());
+        // 运费 改
+//        if(ObjectUtil.isNull(fsStoreOrder.getPayPostage())) {
+//            shopOrderDTO.setFreight(Double.valueOf("0.00"));
+//        } else {
+//            shopOrderDTO.setFreight(fsStoreOrder.getPayPostage().doubleValue());
+//        }
+        if (ObjectUtil.isNull(fsStoreOrder.getPayDelivery())) {
+            shopOrderDTO.setFreight(Double.valueOf("0.00"));
+        } else {
+            shopOrderDTO.setFreight(fsStoreOrder.getPayDelivery().doubleValue());
+        }
+        // 备注
+        shopOrderDTO.setRemark(order.getBuyer_memo());
+        // 买家留言
+        shopOrderDTO.setBuyerMessage(order.getBuyer_memo());
+
+        // 订单商品项列表
+        List<OrderItemDTO> itemDTOList = new ArrayList<>();
+        // 改
+//        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+//        for (FsStoreOrderItemVO item : fsStoreOrderItemVOS) {
+//            OrderItemDTO orderItemDTO = new OrderItemDTO();
+//            JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
+//
+//            String barCode = jsonObject.getString("barCode");
+//            String productName = jsonObject.getString("productName");
+//
+//            orderItemDTO.setSkuId(barCode);
+//            orderItemDTO.setShopSkuId(barCode);
+//            orderItemDTO.setName(productName);
+//
+//            FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(item.getProductId());
+//
+//            orderItemDTO.setAmount(fsStoreProduct.getPrice());
+//
+//            orderItemDTO.setQty(item.getNum().intValue());
+//            orderItemDTO.setOuterOiId(String.format("%s%s",item.getOrderCode(),item.getItemId()));
+//            itemDTOList.add(orderItemDTO);
+//        }
+
+        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemScrmService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+        for (FsStoreOrderItemVO item : fsStoreOrderItemVOS) {
+            OrderItemDTO orderItemDTO = new OrderItemDTO();
+            JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
+
+            String barCode = jsonObject.getString("barCode");
+            String productName = jsonObject.getString("productName");
+            String sku=jsonObject.getString("sku");
+
+            orderItemDTO.setSkuId(barCode);
+            orderItemDTO.setShopSkuId(barCode);
+            orderItemDTO.setName(productName);
+            orderItemDTO.setShopIId(orderItemDTO.getSkuId());//款式编码ID,当前没有这个目前就与SKU ID一致
+            orderItemDTO.setPropertiesValue(sku);//商品属性
+
+            FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(item.getProductId());
+
+            orderItemDTO.setAmount(fsStoreProduct.getPrice());
+
+            orderItemDTO.setQty(item.getNum().intValue());
+            orderItemDTO.setOuterOiId(String.format("%s%s",fsStoreOrder.getOrderCode(),item.getItemId()));
+            itemDTOList.add(orderItemDTO);
+        }
+        shopOrderDTO.setItems(itemDTOList);
+
+        // 实际支付金额
+        PaymentDTO paymentDTO = new PaymentDTO();
+        paymentDTO.setAmount(fsStoreOrder.getPayMoney().doubleValue());
+        paymentDTO.setOuterPayId(order.getPlatform_code());
+        paymentDTO.setPayDate(order.getDeal_datetime());
+        paymentDTO.setPayment("微信支付");
+        paymentDTO.setBuyerAccount(order.getBuyer_account());
+        paymentDTO.setSellerAccount("平台销售");
+        shopOrderDTO.setPay(paymentDTO);
+
+
+        // 如果是货到付款
+        if("2".equals(fsStoreOrder.getPayType()) || "3".equals(fsStoreOrder.getPayType())){
+            shopOrderDTO.setIsCod(true);
+            // 货到付款金额 = 物流代收金额-优惠金额
+            shopOrderDTO.setBuyerPaidAmount(fsStoreOrder.getPayDelivery());
+            shopOrderDTO.setPayAmount(fsStoreOrder.getPayPrice().doubleValue());
+
+            // 货到付款要推两次
+            PaymentDTO paymentDTO2 = new PaymentDTO();
+            // 物流代收金额
+            paymentDTO2.setAmount(fsStoreOrder.getPayDelivery().doubleValue());
+            paymentDTO2.setOuterPayId(String.format("%s%d",order.getPlatform_code(),1));
+            paymentDTO2.setPayDate(order.getDeal_datetime());
+            paymentDTO2.setPayment("货到付款");
+            paymentDTO2.setBuyerAccount(order.getBuyer_account());
+            paymentDTO2.setSellerAccount("平台销售");
+            shopOrderDTO.setPay(paymentDTO2);
+
+            FsJstCodPush fsJstCodPush = new FsJstCodPush();
+            fsJstCodPush.setOrderId(fsStoreOrder.getOrderCode());
+            fsJstCodPush.setType("0");
+            fsJstCodPush.setParams(JSON.toJSONString(shopOrderDTO));
+            fsJstCodPush.setRetryCount(0);
+            fsJstCodPush.setTaskStatus(TaskStatusEnum.PENDING.getCode());
+            fsJstCodPushMapper.insert(fsJstCodPush);
+
+            shopOrderDTO.setPay(paymentDTO);
+        }
+
+        ErpOrderResponseDTO upload = jstErpHttpService.upload(shopOrderDTO);
+
+        if(CollectionUtils.isEmpty(upload.getDatas())) {
+            log.info("推送ERP返回结果: {}",upload);
+            throw new IllegalArgumentException("推送ERP返回数不应该为0");
+        }
+        ErpOrderResponseDTO.OrderData orderData = upload.getDatas().get(0);
+
+        ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+        erpOrderResponse.setSuccess(true);
+        erpOrderResponse.setCode(String.valueOf(orderData.getOId()));
+        return erpOrderResponse;
+    }
+
 
 
     @Override

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/domain/FsUserWatchCourseStatistics.java → fs-service/src/main/java/com/fs/hisStore/domain/FsUserWatchCourseStatisticsScrm.java

@@ -20,7 +20,7 @@ import java.util.Date;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("fs_user_watch_course_statistics")
-public class FsUserWatchCourseStatistics extends BaseEntity{
+public class FsUserWatchCourseStatisticsScrm extends BaseEntity{
 
     /** 主键id */
     private Long id;

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/domain/FsUserWatchStatistics.java → fs-service/src/main/java/com/fs/hisStore/domain/FsUserWatchStatisticsScrm.java

@@ -19,7 +19,7 @@ import java.util.Date;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("fs_user_watch_statistics")
-public class FsUserWatchStatistics extends BaseEntity{
+public class FsUserWatchStatisticsScrm extends BaseEntity{
 
     /** 主键id */
     private Long id;

+ 7 - 7
fs-service/src/main/java/com/fs/hisStore/mapper/FsUserScrmMapper.java

@@ -14,8 +14,8 @@ import com.fs.hisStore.vo.FSUserVO;
 import com.fs.hisStore.vo.FsCompanyUserListQueryVO;
 import com.fs.hisStore.vo.FsUserTuiVO;
 import com.fs.hisStore.vo.h5.*;
-import com.fs.hisStore.domain.FsUserWatchCourseStatistics;
-import com.fs.hisStore.domain.FsUserWatchStatistics;
+import com.fs.hisStore.domain.FsUserWatchCourseStatisticsScrm;
+import com.fs.hisStore.domain.FsUserWatchStatisticsScrm;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
@@ -299,15 +299,15 @@ public interface FsUserScrmMapper
      * 获取会员总数和新增总数-可以按营期/课程
      * @return
      */
-    List<FsUserWatchStatistics> selectFsUserTotal();
+    List<FsUserWatchStatisticsScrm> selectFsUserTotal();
 
-    List<FsUserWatchCourseStatistics> selectWatchLogCount();
+    List<FsUserWatchCourseStatisticsScrm> selectWatchLogCount();
 
-    List<FsUserWatchCourseStatistics> selectRedPacketLogCount();
+    List<FsUserWatchCourseStatisticsScrm> selectRedPacketLogCount();
 
-    List<FsUserWatchCourseStatistics> selectAnswerLogCount();
+    List<FsUserWatchCourseStatisticsScrm> selectAnswerLogCount();
 
-    List<FsUserWatchCourseStatistics> selectFsUserDetail();
+    List<FsUserWatchCourseStatisticsScrm> selectFsUserDetail();
 
     List<FsUserScrm> selectFsUserListByJointUserNameKey(String userNameKey);
 

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -1541,7 +1541,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService
             return R.error("订单:" + order.getOrderCode() +",已推送erp/订单状态不正确");
         }
         ErpOrder erpOrder = getErpOrder(order);
-        ErpOrderResponse response= erpOrderService.addOrder(erpOrder);
+        ErpOrderResponse response= erpOrderService.addOrderScrm(erpOrder);
 //        ErpOrderResponse response= k9OrderService.addOmsOrder(order.getId());
 
         //写入日志

+ 1 - 1
fs-service/src/main/java/com/fs/task/StoreTask.java

@@ -52,7 +52,7 @@ import static com.fs.hisStore.constants.StoreConstants.DELIVERY;
  *
  * @author fs
  */
-@Component("storeTask")
+@Component("mallStoreTask")
 public class StoreTask
 {
     @Autowired

+ 5 - 5
fs-service/src/main/resources/mapper/hisStore/FsUserScrmMapper.xml

@@ -1767,7 +1767,7 @@
         </if>
     </select>
 
-    <select id="selectFsUserTotal" resultType="com.fs.hisStore.domain.FsUserWatchStatistics">
+    <select id="selectFsUserTotal" resultType="com.fs.hisStore.domain.FsUserWatchStatisticsScrm">
         SELECT
             count( fs_user.user_id ) as userNum,
             count( DISTINCT CASE WHEN to_days( fs_user.create_time ) = to_days( now()) THEN fs_user.user_id END ) as newUserNum,
@@ -1785,7 +1785,7 @@
     </select>
 
 
-    <select id="selectWatchLogCount" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatistics">
+    <select id="selectWatchLogCount" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatisticsScrm">
         SELECT
             count( DISTINCT CASE WHEN fwl.log_type != 3 THEN fwl.user_id END ) AS watchNum,
 
@@ -1809,7 +1809,7 @@
             fwl.period_id, fwl.video_id, fwl.company_user_id
     </select>
 
-    <select id="selectRedPacketLogCount" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatistics">
+    <select id="selectRedPacketLogCount" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatisticsScrm">
         SELECT
             count( flog.log_id ) AS redPacketNum,
             ifnull ( sum( flog.amount ), 0 ) AS redPacketAmount,
@@ -1825,7 +1825,7 @@
             flog.company_user_id
     </select>
 
-    <select id="selectAnswerLogCount" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatistics">
+    <select id="selectAnswerLogCount" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatisticsScrm">
         SELECT
             count( DISTINCT fs_user.user_id ) AS answerNum,
             COUNT( DISTINCT CASE WHEN fs_course_answer_logs.is_right = 1 THEN fs_user.user_id END ) AS answerRightNum,
@@ -1851,7 +1851,7 @@
             fs_course_answer_logs.company_user_id
     </select>
 
-    <select id="selectFsUserDetail" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatistics">
+    <select id="selectFsUserDetail" resultType="com.fs.hisStore.domain.FsUserWatchCourseStatisticsScrm">
         SELECT
         count( fs_user.user_id ) as userNum,
         count( DISTINCT CASE WHEN to_days( fs_user.create_time ) = to_days( now()) THEN fs_user.user_id END ) as newUserNum,

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/CourseCommentScrmController.java

@@ -58,7 +58,7 @@ public class CourseCommentScrmController extends AppBaseController
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         List<FsUserCourseCommentListUVO> list = fsUserCourseCommentService.selectFsUserCourseCommentListUVO(param);
         list.forEach(comment -> {
-            List<FsUserCourseCommentReplyListUVO> replies = fsUserCourseCommentService.selectFsUserCourseCommentReplyListUVO(comment.getCommentId());
+            List<FsUserCourseCommentReplyListUVO> replies = fsUserCourseCommentService.selectFsUserCourseCommentReplyListUVO(comment.getCommentId(), getUserId());
             comment.setReplyList(replies);
         });
         PageInfo<FsUserCourseCommentListUVO> listPageInfo=new PageInfo<>(list);

+ 6 - 4
fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

@@ -69,6 +69,8 @@ import java.util.concurrent.TimeUnit;
 @RequestMapping(value="/store/app/storeOrder")
 public class StoreOrderScrmController extends AppBaseController {
 
+    private static final String STORE_PAY_CONF = "store.pay";
+
     Logger logger= LoggerFactory.getLogger(getClass());
     @Autowired
     private WxPayProperties wxPayProperties;
@@ -334,7 +336,7 @@ public class StoreOrderScrmController extends AppBaseController {
 //            order.setOrderCode(orderCode);
 //            if(order.getPayType().equals("1")||order.getPayType().equals("2")){
             if((order.getPayType().equals("1")||order.getPayType().equals("2")||order.getPayType().equals("3")) && order.getPayMoney().compareTo(new BigDecimal(0))>0){
-                String json = configService.selectConfigByKey("store.pay");
+                String json = configService.selectConfigByKey(STORE_PAY_CONF);
                 FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
                 FsStorePaymentScrm storePayment=new FsStorePaymentScrm();
                 storePayment.setCompanyId(order.getCompanyId());
@@ -523,7 +525,7 @@ public class StoreOrderScrmController extends AppBaseController {
         FsUserScrm user=userService.selectFsUserById(order.getUserId());
         if(user!=null&& StringUtils.isNotEmpty(user.getMaOpenId())){
             String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
-            String json = configService.selectConfigByKey("store.pay");
+            String json = configService.selectConfigByKey(STORE_PAY_CONF);
             FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
             FsStorePaymentScrm storePayment=new FsStorePaymentScrm();
             storePayment.setCompanyId(order.getCompanyId());
@@ -641,7 +643,7 @@ public class StoreOrderScrmController extends AppBaseController {
                 return R.error("正在支付中...");
             }
 
-            String json = configService.selectConfigByKey("store.pay");
+            String json = configService.selectConfigByKey(STORE_PAY_CONF);
             FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
             String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
             //易宝支付
@@ -762,7 +764,7 @@ public class StoreOrderScrmController extends AppBaseController {
                 return R.error("此订单已支付");
             }
             String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
-            String json = configService.selectConfigByKey("store.pay");
+            String json = configService.selectConfigByKey(STORE_PAY_CONF);
             FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
             FsStorePaymentScrm storePayment=new FsStorePaymentScrm();
             storePayment.setCompanyId(order.getCompanyId());

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/WxPayScrmController.java

@@ -67,7 +67,7 @@ public class WxPayScrmController {
 
         try {
             String xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding());
-            WxPayOrderNotifyResult result = wxPayService.parseOrderNotifyResult(xmlResult);
+            WxPayOrderNotifyResult result = wxPayService.parseOrderNotifyResult(xmlResult,"MD5");
             System.out.println(result.getReturnCode());
             if("SUCCESS".equals(result.getReturnCode())){
                 //订单号

+ 3 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java

@@ -311,6 +311,9 @@ public class WxUserScrmController extends AppBaseController {
                 if(StringUtils.isNotEmpty(session.getUnionid())){
                     userMap.setUnionId(session.getUnionid());
                 }
+                if(StringUtils.isNotEmpty(session.getOpenid())){
+                    userMap.setMaOpenId(session.getOpenid());
+                }
                 userService.updateFsUser(userMap);
             }
             String token = jwtUtils.generateToken(user.getUserId());