Browse Source

Merge remote-tracking branch 'origin/ScrmStores' into ScrmStores

liupeng 2 days ago
parent
commit
b9bc2d55d1

+ 16 - 0
fs-admin/src/main/java/com/fs/user/controller/FsUserComplaintController.java

@@ -2,6 +2,7 @@ package com.fs.user.controller;
 
 import java.util.List;
 
+import com.fs.common.exception.ServiceException;
 import com.fs.user.domain.param.FsUserComplaintParam;
 import com.fs.user.domain.vo.FsUserComplaintVo;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -103,4 +104,19 @@ public class FsUserComplaintController extends BaseController
     {
         return toAjax(fsUserComplaintService.deleteFsUserComplaintByIds(ids));
     }
+
+    /**
+     * 完成投诉
+     * @param fsUserComplaint 对象
+     * @return AjaxResult
+     */
+    @PostMapping("/completeComplaint")
+    public AjaxResult completeComplaint(@RequestBody FsUserComplaint fsUserComplaint)
+    {
+        if(fsUserComplaint.getId() == null){
+            throw new ServiceException("操作失败,投书关键信息不能为空!");
+        }
+        fsUserComplaint.setIsProcessCompleted(1);
+        return toAjax(fsUserComplaintService.updateFsUserComplaint(fsUserComplaint));
+    }
 }

+ 10 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -16,6 +16,8 @@ import com.fs.hisStore.domain.FsStoreOrderItemScrm;
 import com.fs.hisStore.domain.ReportScrm;
 import com.fs.hisStore.param.*;
 import com.fs.hisStore.vo.*;
+import io.swagger.models.auth.In;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
@@ -1229,4 +1231,12 @@ public interface FsStoreOrderScrmMapper
 
     @Select("select * from fs_store_order_scrm where id in (#{orderIds})")
     List<FsStoreOrderScrm> selectFsStoreOrderByOrderIds(String orderIds);
+
+    /**
+     * 批量查询多个订单的处方药数量
+     * @param orderIds 订单ID列表
+     * @return Map<Long, Integer> 键:订单ID,值:该订单的处方药数量
+     */
+    @MapKey("orderId")
+    Map<Long, Long> batchGetPrescriptionDrugCount(@Param("orderIds") List<Long> orderIds);
 }

+ 7 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java

@@ -294,4 +294,11 @@ public interface IFsStoreOrderScrmService
     R confirmOrderMultiStore(long uid, List<FsStoreConfirmOrderGroupStoreParam> cartParamList);
 
     List<FsStoreOrderComputeDTO> computedOrders(long parseLong, FsStoreOrderComputedGroupStoreParam param);
+
+    /**
+     * 获取订单处方药及开方状态数量
+     * @param orderIds 订单IDs
+     * @return Integer
+     * **/
+    Map<Long, Long> batchGetPrescriptionDrugCount(List<Long> orderIds);
 }

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

@@ -3990,6 +3990,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                     }
                 }
             }
+
             storeOrder.setPayPostage(dto.getPayPostage());
             storeOrder.setDeductionPrice(dto.getDeductionPrice());
             storeOrder.setPaid(0);
@@ -4181,6 +4182,11 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         return dtos;
     }
 
+    @Override
+    public Map<Long, Long> batchGetPrescriptionDrugCount(List<Long> orderIds) {
+        return fsStoreOrderMapper.batchGetPrescriptionDrugCount(orderIds);
+    }
+
     private static final DateTimeFormatter CST_FORMATTER = DateTimeFormatter
             .ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US)
             .withZone(ZoneId.of("Asia/Shanghai"));

+ 5 - 2
fs-service/src/main/java/com/fs/user/domain/FsUserComplaint.java

@@ -59,11 +59,11 @@ public class FsUserComplaint extends BaseEntity{
     private Integer isReadUser;
 
     /** 商家是否有未读消息 0:否 1:是 */
-    @Excel(name = "用户是否有未读消息 0:否 1:是 ")
+    @Excel(name = "商家是否有未读消息 0:否 1:是 ")
     private Integer isReadStore;
 
     /** 平台是否有未读消息 0:否 1:是 */
-    @Excel(name = "用户是否有未读消息 0:否 1:是 ")
+    @Excel(name = "平台是否有未读消息 0:否 1:是 ")
     private Integer isReadPlatform;
 
     /** 店铺id */
@@ -74,4 +74,7 @@ public class FsUserComplaint extends BaseEntity{
 
     private String productIds;
 
+    /** 商机是否处理完成 0:否 1:是 */
+    @Excel(name = "商机是否处理完成 0:否 1:是 ")
+    private Integer isProcessCompleted;
 }

+ 13 - 6
fs-service/src/main/java/com/fs/user/service/impl/FsUserComplaintMsgServiceImpl.java

@@ -4,6 +4,7 @@ import java.util.List;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.user.domain.FsUserComplaint;
+import com.fs.user.mapper.FsUserComplaintMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.user.mapper.FsUserComplaintMsgMapper;
@@ -20,6 +21,9 @@ import org.springframework.transaction.annotation.Transactional;
 @Service
 public class FsUserComplaintMsgServiceImpl extends ServiceImpl<FsUserComplaintMsgMapper, FsUserComplaintMsg> implements IFsUserComplaintMsgService {
 
+    @Autowired
+    private FsUserComplaintMapper fsUserComplaintMapper;
+
     /**
      * 查询投诉消息记录
      *
@@ -63,23 +67,26 @@ public class FsUserComplaintMsgServiceImpl extends ServiceImpl<FsUserComplaintMs
         Integer sendType = fsUserComplaintMsg.getSendType();
         switch (sendType){
             case 1:
-                fsUserComplaint.setIsReadPlatform(0);
-                fsUserComplaint.setIsReadStore(0);
+                fsUserComplaint.setIsReadPlatform(1);
+                fsUserComplaint.setIsReadStore(1);
+                fsUserComplaint.setIsReadUser(0);
                 break;
             case 2:
                 fsUserComplaint.setIsHandlePlatform(1);
-                fsUserComplaint.setIsReadPlatform(1);
-                fsUserComplaint.setIsReadUser(0);
+                fsUserComplaint.setIsReadPlatform(0);
+                fsUserComplaint.setIsReadUser(1);
                 break;
             case 3:
                 fsUserComplaint.setIsHandleStore(1);
-                fsUserComplaint.setIsReadStore(1);
-                fsUserComplaint.setIsReadUser(0);
+                fsUserComplaint.setIsReadStore(0);
+                fsUserComplaint.setIsReadUser(1);
                 break;
             default:
                 return 0;
         }
 
+        //更新投诉主表状态
+        fsUserComplaintMapper.updateById(fsUserComplaint);
         return baseMapper.insertFsUserComplaintMsg(fsUserComplaintMsg);
     }
 

+ 6 - 0
fs-service/src/main/java/com/fs/user/service/impl/FsUserComplaintServiceImpl.java

@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.utils.StringUtils;
@@ -98,6 +99,11 @@ public class FsUserComplaintServiceImpl extends ServiceImpl<FsUserComplaintMappe
     @Override
     public int updateFsUserComplaint(FsUserComplaint fsUserComplaint)
     {
+        //验证数据是否存在
+        FsUserComplaint checkUserComplaint = baseMapper.selectFsUserComplaintById(fsUserComplaint.getId());
+        if(checkUserComplaint == null){
+            throw new ServiceException("操作失败,投诉信息不存在!");
+        }
         fsUserComplaint.setUpdateTime(DateUtils.getNowDate());
         return baseMapper.updateFsUserComplaint(fsUserComplaint);
     }

+ 16 - 0
fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml

@@ -979,4 +979,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectFsStoreOrderVo"/>
         where combination_order_id like #{combinationId}
     </select>
+
+    <select id="batchGetPrescriptionDrugCount" resultType="java.util.Map">
+        SELECT
+        sos.id AS orderId
+        FROM
+        fs_store_order_scrm sos
+        INNER JOIN fs_store_order_item_scrm sois ON sos.id = sois.order_id
+        INNER JOIN fs_store_product_scrm sps ON sps.product_id = sois.product_id
+        WHERE
+        sos.id IN
+        <foreach collection="orderIds" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        AND sps.product_type = 2
+        GROUP BY sos.id
+    </select>
 </mapper>

+ 5 - 2
fs-service/src/main/resources/mapper/user/FsUserComplaintMapper.xml

@@ -25,11 +25,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="isReadPlatform"    column="is_read_platform"    />
         <result property="storeId"    column="store_id"    />
         <result property="orderId"    column="order_id"    />
+        <result property="isProcessCompleted"    column="is_process_completed"    />
     </resultMap>
 
     <sql id="selectFsUserComplaintVo">
         select id, fs_user_id, title, content, images, type, link_id, create_time, create_by, update_time, update_by,
-               remark,complaint_type,is_handle_store,is_handle_platform,is_read_user,is_read_store,is_read_platform,store_id,order_id
+               remark,complaint_type,is_handle_store,is_handle_platform,is_read_user,is_read_store,is_read_platform,store_id,order_id,is_process_completed
         from fs_user_complaint
     </sql>
 
@@ -49,13 +50,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isReadStore != null "> and is_read_store = #{isReadStore}</if>
             <if test="isReadPlatform != null "> and is_read_platform = #{isReadPlatform}</if>
             <if test="storeId != null "> and store_id = #{storeId}</if>
+            <if test="isProcessCompleted != null "> and is_process_completed = #{isProcessCompleted}</if>
         </where>
         order by id desc
     </select>
 
     <select id="selectFsUserComplaintVoList" resultType="com.fs.user.domain.vo.FsUserComplaintVo">
         select c.id, u.nick_name,c.title, c.content, c.images, c.type, c.link_id, c.create_time, c.create_by, c.update_time, c.update_by,
-               c.remark,c.complaint_type,c.is_handle_store,c.is_handle_platform,c.is_read_user,c.is_read_store,c.is_read_platform,c.store_id
+               c.remark,c.complaint_type,c.is_handle_store,c.is_handle_platform,c.is_read_user,c.is_read_store,c.is_read_platform,c.store_id,is_process_completed
         from fs_user_complaint c
         left join fs_user u on c.fs_user_id = u.user_id
         <where>
@@ -162,6 +164,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storeId != null">store_id = #{storeId},</if>
             <if test="orderId != null">order_id = #{orderId},</if>
             <if test="productIds != null">product_ids = #{productIds},</if>
+            <if test="isProcessCompleted != null">is_process_completed = #{isProcessCompleted},</if>
         </trim>
         where id = #{id}
     </update>

+ 17 - 0
fs-store/src/main/java/com/fs/hisStore/controller/store/FsUserComplaintController.java

@@ -5,6 +5,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.hisStore.utils.UserUtil;
 import com.fs.user.domain.FsUserComplaint;
@@ -79,4 +80,20 @@ public class FsUserComplaintController extends BaseController
     }
 
 
+
+    /**
+     * 完成投诉
+     * @param fsUserComplaint 对象
+     * @return AjaxResult
+     */
+    @PostMapping("/completeComplaint")
+    public AjaxResult completeComplaint(@RequestBody FsUserComplaint fsUserComplaint)
+    {
+        if(fsUserComplaint.getId() == null){
+            throw new ServiceException("操作失败,投书关键信息不能为空!");
+        }
+        fsUserComplaint.setIsProcessCompleted(1);
+        return toAjax(fsUserComplaintService.updateFsUserComplaint(fsUserComplaint));
+    }
+
 }

+ 2 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/FsStoreUserComplaintController.java

@@ -6,6 +6,7 @@ import com.fs.common.annotation.Log;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.user.domain.FsUserComplaint;
 import com.fs.user.domain.FsUserComplaintMsg;
@@ -38,6 +39,7 @@ public class FsStoreUserComplaintController extends AppBaseController
     public TableDataInfo list(FsUserComplaint fsUserComplaint)
     {
         startPage();
+        fsUserComplaint.setFsUserId(Long.valueOf(getUserId()));
         List<FsUserComplaint> list = fsUserComplaintService.selectFsUserComplaintList(fsUserComplaint);
         return getDataTable(list);
     }

+ 100 - 93
fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

@@ -66,9 +66,11 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 
 @Api("商城接口")
@@ -355,64 +357,51 @@ public class StoreOrderScrmController extends AppBaseController {
     //@Synchronized
     public R pay(HttpServletRequest request, @Validated @RequestBody FsStoreOrderPayParam param)
     {
-        FsStoreOrderScrm order=orderService.selectFsStoreOrderById(param.getOrderId());
-        if(order==null){
+        FsStoreOrderScrm order = orderService.selectFsStoreOrderById(param.getOrderId());
+
+        String errorMsg = checkPrescriptionOrders(Collections.singletonList(order));
+        if (errorMsg != null) {
+            return R.error(errorMsg);
+        }
+
+        if (order == null) {
             return R.error("订单不存在");
         }
-        if(order.getStatus()!= OrderInfoEnum.STATUS_0.getValue()){
+        if (order.getStatus() != OrderInfoEnum.STATUS_0.getValue()) {
             return R.error("订单状态不正确");
         }
-        String orderId=redisCache.getCacheObject("isPaying:"+order.getId());
-        if(StringUtils.isNotEmpty(orderId)&&orderId.equals(order.getId().toString())){
-            return R.error("正在支付中...");
-        }
-
-        FsUserScrm user=userService.selectFsUserById(order.getUserId());
-        if(user!=null&& StringUtils.isNotEmpty(user.getMaOpenId())){
+        FsUserScrm user = userService.selectFsUserById(order.getUserId());
+        if (user != null && StringUtils.isNotEmpty(user.getMaOpenId())) {
             //已改价处理
-            if(order.getIsEditMoney()!=null&&order.getIsEditMoney()==1){
+            if (order.getIsEditMoney() != null && order.getIsEditMoney() == 1) {
                 //改过价不做处理
-
-            }
-            else{
-                String config=configService.selectConfigByKey("his.store");
-                StoreConfig storeConfig= JSONUtil.toBean(config,StoreConfig.class);
-                if(param.getPayType().equals(1)){
+            } else {
+                String config = configService.selectConfigByKey("store.config");
+                StoreConfig storeConfig = JSONUtil.toBean(config, StoreConfig.class);
+                if (param.getPayType().equals(1)) {
                     order.setPayType("1");
                     order.setPayMoney(order.getPayPrice());
                     order.setPayDelivery(BigDecimal.ZERO);
-                }
-                else if(param.getPayType().equals(2)){
+                } else if (param.getPayType().equals(2)) {
                     order.setPayType("2");
-                    BigDecimal payMoney=order.getPayPrice().multiply(new BigDecimal(storeConfig.getPayRate())).divide(new BigDecimal(100));
-                    payMoney=new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
+                    BigDecimal payMoney = order.getPayPrice().multiply(new BigDecimal(storeConfig.getPayRate())).divide(new BigDecimal(100));
+                    payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
                     order.setPayDelivery(order.getPayPrice().subtract(payMoney));
                     order.setPayMoney(payMoney);
-                }
-                else if(param.getPayType().equals(3)){
+                } else if (param.getPayType().equals(3)) {
                     //货到付款
                     order.setPayType("3");
-                    BigDecimal amount=redisCache.getCacheObject("orderAmount:"+order.getId());
-                    BigDecimal payMoney = BigDecimal.ZERO;
-                    if (amount != null){
-                        payMoney=amount;
-                    }
-                    order.setPayMoney(payMoney);
-                    order.setPayDelivery(order.getPayPrice().subtract(payMoney) );
-//                    order.setPayMoney(BigDecimal.ZERO);
+                    order.setPayDelivery(order.getPayPrice());
+                    order.setPayMoney(BigDecimal.ZERO);
                 }
                 orderService.updateFsStoreOrder(order);
             }
             String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
-//            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_CONF);
-                FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
-                FsStorePaymentScrm storePayment=new FsStorePaymentScrm();
+//          order.setOrderCode(orderCode);
+            if (order.getPayType().equals("1") || order.getPayType().equals("2")) {
+                FsStorePaymentScrm storePayment = new FsStorePaymentScrm();
                 storePayment.setCompanyId(order.getCompanyId());
                 storePayment.setCompanyUserId(order.getCompanyUserId());
-                storePayment.setPayMode(fsPayConfig.getType());
                 storePayment.setStatus(0);
                 storePayment.setPayCode(payCode);
                 storePayment.setPayMoney(order.getPayMoney());
@@ -425,72 +414,59 @@ public class StoreOrderScrmController extends AppBaseController {
                 storePayment.setBusinessOrderId(order.getId().toString());
                 storePayment.setOrderId(order.getId());
                 fsStorePaymentMapper.insertFsStorePayment(storePayment);
+                HuiFuCreateOrder o = new HuiFuCreateOrder();
+                o.setTradeType("T_MINIAPP");
+                o.setOpenid(user.getMaOpenId());
+                o.setReqSeqId("store-" + storePayment.getPayCode());
+                o.setTransAmt(storePayment.getPayMoney().toString());
+                o.setGoodsDesc("商城订单支付");
+                HuifuCreateOrderResult result = huiFuService.createOrder(o);
+                //创建订单
+                if (result.getBank_code() != null && result.getBank_code().equals("00000000")) {
+                    FsStorePaymentScrm mt = new FsStorePaymentScrm();
+                    mt.setPaymentId(storePayment.getPaymentId());
+                    mt.setTradeNo(result.getHf_seq_id());
+                    fsStorePaymentMapper.updateFsStorePayment(mt);
+//                    redisCache.setCacheObject("isPaying:" + order.getId(), order.getId().toString(), 1, TimeUnit.MINUTES);
+                    String mes = result.getPay_info();
+                    JSONObject payInfo = JSONUtil.parseObj(mes);
+                    FsHuiFuPayInfo fsHuiFuPayInfo = new FsHuiFuPayInfo();
+                    if (payInfo.get("timeStamp") != null) {
+                        fsHuiFuPayInfo.setTimeStamp(payInfo.get("timeStamp").toString());
+                    }
+                    if (payInfo.get("package") != null) {
+                        fsHuiFuPayInfo.setPackageStr(payInfo.get("package").toString());
+                    }
+                    if (payInfo.get("paySign") != null) {
+                        fsHuiFuPayInfo.setPaySign(payInfo.get("paySign").toString());
 
-                if (fsPayConfig.getType().equals("hf")){
-                    HuiFuCreateOrder o = new HuiFuCreateOrder();
-                    o.setTradeType("T_MINIAPP");
-                    o.setOpenid(user.getMaOpenId());
-                    o.setReqSeqId("store-"+storePayment.getPayCode());
-                    o.setTransAmt(storePayment.getPayMoney().toString());
-                    o.setGoodsDesc("商城订单支付");
-                    if (param != null && StringUtils.isNotBlank(param.getAppId())) {
-                        o.setAppId(param.getAppId());
                     }
-                    HuifuCreateOrderResult result = huiFuService.createOrder(o);
-                    if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
-                        FsStorePaymentScrm mt=new FsStorePaymentScrm();
-                        mt.setPaymentId(storePayment.getPaymentId());
-                        mt.setTradeNo(result.getHf_seq_id());
-                        fsStorePaymentMapper.updateFsStorePayment(mt);
-                        redisCache.setCacheObject("isPaying:"+order.getId(),order.getId().toString(),1, TimeUnit.MINUTES);
-                        Map<String, Object> resultMap = JSON.parseObject(result.getPay_info(), new TypeReference<Map<String, Object>>() {});
-                        String s = (String) resultMap.get("package");
-                        resultMap.put("packageValue",s);
-                        return R.ok().put("payType",param.getPayType()).put("result",resultMap);
+                    if (payInfo.get("appId") != null) {
+                        fsHuiFuPayInfo.setAppId(payInfo.get("appId").toString());
+
                     }
-                    else{
-                        return R.error(result.getResp_desc());
+                    if (payInfo.get("signType") != null) {
+                        fsHuiFuPayInfo.setSignType(payInfo.get("signType").toString());
+
                     }
-                }else  if (fsPayConfig.getType().equals("wx")){
-                    WxPayConfig payConfig = new WxPayConfig();
-                    payConfig.setAppId(fsPayConfig.getAppId());
-                    payConfig.setMchId(fsPayConfig.getWxMchId());
-                    payConfig.setMchKey(fsPayConfig.getWxMchKey());
-                    payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
-                    payConfig.setSubMchId(org.apache.commons.lang3.StringUtils.trimToNull(null));
-                    payConfig.setKeyPath(fsPayConfig.getKeyPath());
-                    payConfig.setNotifyUrl(fsPayConfig.getNotifyUrlScrm());
-                    wxPayService.setConfig(payConfig);
-                    WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
-                    orderRequest.setOpenid(user.getMaOpenId());//公众号支付提供用户openid
-                    orderRequest.setBody("商城订单支付");
-                    orderRequest.setOutTradeNo("store-" + storePayment.getPayCode());
-                    orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(storePayment.getPayMoney().toString()));//测试
-                    //orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(money));//测试
-                    orderRequest.setTradeType("JSAPI");
-                    orderRequest.setSpbillCreateIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
-                    //调用统一下单接口,获取"预支付交易会话标识"
-                    try {
-                        WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest);
-                        return R.ok().put("result", orderResult).put("type", "wx").put("isPay", 0).put("payType",param.getPayType());
-                    } catch (WxPayException e) {
-                        e.printStackTrace();
-                        throw new CustomException("支付失败" + e.getMessage());
+                    if (payInfo.get("nonceStr") != null) {
+                        fsHuiFuPayInfo.setNonceStr(payInfo.get("nonceStr").toString());
                     }
+                    return R.ok().put("payType", param.getPayType()).put("result", fsHuiFuPayInfo);
+                } else {
+                    return R.error(result.getResp_desc());
                 }
-            }
-//            else if(order.getPayType().equals("3")){
-            else if(order.getPayType().equals("3") && order.getPayMoney().compareTo(new BigDecimal(0))<=0){
+
+            } else if (order.getPayType().equals("3")) {
                 //货到付款
-                orderService.payConfirm(2,order.getId(),null,null,null,null);
-                return R.ok().put("payType",param.getPayType());
+                orderService.payConfirm(2, order.getId(), null, null, null, null);
+                return R.ok().put("payType", param.getPayType());
             }
+
             return R.error();
-        }
-        else{
+        } else {
             return R.error("用户OPENID不存在");
         }
-
     }
 
     @Login
@@ -507,6 +483,12 @@ public class StoreOrderScrmController extends AppBaseController {
 
         String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
         List<FsStoreOrderScrm> orders = orderService.getStoreOrderByCombinationId(param.getCombinationOrderId());
+
+        String errorMsg = checkPrescriptionOrders(orders);
+        if (errorMsg != null) {
+            return R.error(errorMsg);
+        }
+
         //新增的支付详情id
         ArrayList<Long> paymentIds = new ArrayList<>();
         for (FsStoreOrderScrm order : orders) {
@@ -1465,4 +1447,29 @@ public class StoreOrderScrmController extends AppBaseController {
             return R.error(e.getMessage());
         }
     }
+
+    /**
+     * 检查订单列表中是否存在含处方药但未开方的订单
+     * @param orders 待检查的订单列表
+     * @return 存在问题订单返回错误提示信息,否则返回null
+     */
+    public String checkPrescriptionOrders(List<FsStoreOrderScrm> orders) {
+        if (orders == null || orders.isEmpty()) {
+            return null;
+        }
+
+        List<Long> orderIds = orders.stream()
+                .map(FsStoreOrderScrm::getId)
+                .collect(Collectors.toList());
+
+        Map<Long, Long> prescriptionCountMap = orderService.batchGetPrescriptionDrugCount(orderIds);
+        if(prescriptionCountMap != null){
+            for (FsStoreOrderScrm order : orders) {
+                if (prescriptionCountMap.containsKey(BigInteger.valueOf(order.getId())) && order.getPrescribeId() == null) {
+                    return "处方订单未开具,无法支付!";
+                }
+            }
+        }
+        return null;
+    }
 }