Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

yuhongqi 2 týždňov pred
rodič
commit
627c912d76
22 zmenil súbory, kde vykonal 334 pridanie a 27 odobranie
  1. 10 1
      fs-admin/src/main/java/com/fs/company/controller/CompanyMoneyLogsController.java
  2. 4 1
      fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java
  3. 53 0
      fs-admin/src/main/java/com/fs/his/task/Task.java
  4. 9 1
      fs-company/src/main/java/com/fs/company/controller/company/CompanyMoneyLogsController.java
  5. 9 0
      fs-company/src/main/java/com/fs/company/controller/fastGpt/FastGptRoleController.java
  6. 3 0
      fs-company/src/main/java/com/fs/company/controller/live/OrderController.java
  7. 43 11
      fs-service/src/main/java/com/fs/company/mapper/CompanyMoneyLogsMapper.java
  8. 9 1
      fs-service/src/main/java/com/fs/company/service/impl/CompanyMoneyLogsServiceImpl.java
  9. 1 1
      fs-service/src/main/java/com/fs/company/vo/CompanyMoneyLogsVO.java
  10. 6 0
      fs-service/src/main/java/com/fs/fastGpt/domain/FastGptRole.java
  11. 5 1
      fs-service/src/main/java/com/fs/fastGpt/mapper/FastGptRoleMapper.java
  12. 2 0
      fs-service/src/main/java/com/fs/fastGpt/service/IFastGptRoleService.java
  13. 7 0
      fs-service/src/main/java/com/fs/fastGpt/service/impl/FastGptRoleServiceImpl.java
  14. 2 2
      fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderMapper.java
  15. 1 0
      fs-service/src/main/java/com/fs/his/param/FsCompanyMoneyLogsExportParam.java
  16. 3 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStorePaymentScrmMapper.java
  17. 1 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsStorePaymentScrmService.java
  18. 5 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java
  19. 140 6
      fs-service/src/main/java/com/fs/sop/service/impl/QwSopTempServiceImpl.java
  20. 1 1
      fs-service/src/main/resources/mapper/company/CompanyUserMapper.xml
  21. 10 1
      fs-service/src/main/resources/mapper/fastGpt/FastGptRoleMapper.xml
  22. 10 0
      fs-service/src/main/resources/mapper/hisStore/MergedOrderMapper.xml

+ 10 - 1
fs-admin/src/main/java/com/fs/company/controller/CompanyMoneyLogsController.java

@@ -73,6 +73,7 @@ public class CompanyMoneyLogsController extends BaseController
         }
         if(companyMoneyLogs.getLogsType()!=null){
             if(companyMoneyLogs.getLogsType()==3 || companyMoneyLogs.getLogsType()==4 || companyMoneyLogs.getLogsType()==5 || companyMoneyLogs.getLogsType()==6 || companyMoneyLogs.getLogsType()==13|| companyMoneyLogs.getLogsType()==14){
+                // 根据type字段判断,支持商城订单(type=0)和直播订单(type=1)
                 List<CompanyMoneyLogsVO> list = companyMoneyLogsService.selectCompanyMoneyLogsMallVOList(companyMoneyLogs);
                 return getDataTable(list);
             }
@@ -156,7 +157,15 @@ public class CompanyMoneyLogsController extends BaseController
             task.setStatus(0);
             task.setStartTime(new Date());
             task.setSysType(1);
-            task.setRemark("导出商城订单明细");
+            String remark = "导出订单明细";
+            if (param.getOrderType() != null) {
+                if (param.getOrderType() == 0) {
+                    remark = "导出商城订单明细";
+                } else if (param.getOrderType() == 1) {
+                    remark = "导出直播订单明细";
+                }
+            }
+            task.setRemark(remark);
             task.setUserId(SecurityUtils.getUserId());
             exportTaskService.insertFsExportTask(task);
             param.setTaskId(task.getTaskId());

+ 4 - 1
fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java

@@ -42,6 +42,7 @@ import com.fs.his.param.FsStoreOrderSetErpPhoneParam;
 import com.fs.his.service.*;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.vo.*;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.fs.system.service.ISysRoleService;
@@ -82,6 +83,8 @@ public class FsStoreOrderController extends BaseController
     @Autowired
     private IFsStoreOrderService fsStoreOrderService;
     @Autowired
+    private IFsStoreOrderScrmService fsStoreOrderScrmService;
+    @Autowired
     private IFsExpressService expressService;
     @Autowired
     private ICompanyMoneyLogsService moneyLogsService;
@@ -458,7 +461,7 @@ public class FsStoreOrderController extends BaseController
     @GetMapping("/payment/{orderId}")
     public AjaxResult getPayInfo(@PathVariable("orderId") Long orderId)
     {
-        return AjaxResult.success(fsStoreOrderService.selectFsStorePaymentByOrderId(orderId));
+        return AjaxResult.success(fsStoreOrderScrmService.selectFsStorePaymentByOrderId(orderId));
     }
     /**
      * 获取处方详细信息

+ 53 - 0
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.service.impl.SmsServiceImpl;
 import com.fs.common.utils.DateUtils;
@@ -50,6 +51,8 @@ import com.fs.his.vo.FsSubOrderResultVO;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStorePaymentScrm;
 import com.fs.hisStore.mapper.FsStorePaymentScrmMapper;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
+import com.fs.hisStore.service.IFsStorePaymentScrmService;
 import com.fs.huifuPay.domain.HuiFuQueryOrderResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
 import com.fs.huifuPay.service.HuiFuService;
@@ -225,7 +228,11 @@ public class Task {
     @Autowired
     private AiHookService aiHookService;
 
+    @Autowired
+    private IFsStorePaymentScrmService paymentScrmService;
 
+    @Autowired
+    private IFsStoreOrderScrmService orderScrmService;
     /**
      * 定时任务,处理ai禁止回复之后的消息
      */
@@ -590,6 +597,52 @@ public class Task {
 
     }
 
+    public void paymentScrm() {
+
+        List<FsStorePaymentScrm> fsStorePaymentScrms = paymentScrmService.selectFsStorePaymentByAll();
+        fsStorePaymentScrms.forEach(payment -> {
+            try {
+                String payMode = payment.getPayMode();
+                logger.info("手动查询"+payment);
+                if (payMode.equals("hf")){
+                    V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
+                    request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
+                    request.setOrgHfSeqId(payment.getTradeNo());
+                    request.setAppId(payment.getAppId());
+                    HuiFuQueryOrderResult o = null;
+                    try {
+                        o = huiFuService.queryOrder(request);
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                    logger.info("汇付返回"+o);
+                    if ("00000000".equals(o.getResp_code())) {
+                        if (o.getTrans_stat().equals("S")) {
+                            String[] order=o.getOrg_req_seq_id().split("-");
+                            switch (order[0]) {
+                                case "store":
+                                    orderScrmService.payConfirm(1,null,order[1], o.getOrg_hf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
+                                    break;
+                                case "store_remain":
+                                    orderScrmService.payRemainConfirm( order[1], o.getOrg_hf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
+                                    break;
+                                case "payment":
+                                    fsStorePaymentService.payConfirm(order[1],o.getOrg_hf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
+                                    break;
+                            }
+                        }
+                    }
+                }
+            }catch (Exception e){
+                logger.error("当前订单同步失败-"+payment+":"+e.getMessage());
+            }
+
+        });
+
+
+    }
+
+
     public void addQwUserName() {
         QwCompany qwCompany = new QwCompany();
         List<QwCompany> companyList = qwCompanyService.selectQwCompanyList(qwCompany);

+ 9 - 1
fs-company/src/main/java/com/fs/company/controller/company/CompanyMoneyLogsController.java

@@ -126,7 +126,15 @@ public class CompanyMoneyLogsController extends BaseController
             task.setTaskType(7);
             task.setStatus(0);
             task.setStartTime(new Date());
-            task.setRemark("药品订单导出");
+            String remark = "导出订单明细";
+            if (param.getOrderType() != null) {
+                if (param.getOrderType() == 0) {
+                    remark = "导出商城订单明细";
+                } else if (param.getOrderType() == 1) {
+                    remark = "导出直播订单明细";
+                }
+            }
+            task.setRemark(remark);
             task.setSysType(2);
             task.setCompanyUserId(userId);
             exportTaskService.insertFsExportTask(task);

+ 9 - 0
fs-company/src/main/java/com/fs/company/controller/fastGpt/FastGptRoleController.java

@@ -8,6 +8,7 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.fastGpt.domain.FastGptRole;
 import com.fs.fastGpt.service.IFastGptRoleService;
 import com.fs.fastGpt.vo.FastGptRoleVO;
@@ -78,6 +79,14 @@ public class FastGptRoleController extends BaseController
         return util.exportExcel(list, "应用数据");
     }
 
+    @GetMapping("/getAllCourseList")
+    public R getAllCourseList()
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        List<FsUserCourseVideo> list = fastGptRoleService.selectAllCourseList(loginUser.getCompany().getCompanyId());
+        return R.ok().put("data",list);
+    }
+
     /**
      * 获取应用详细信息
      */

+ 3 - 0
fs-company/src/main/java/com/fs/company/controller/live/OrderController.java

@@ -68,6 +68,9 @@ public class OrderController extends BaseController
         }
         CompanyUser user = SecurityUtils.getLoginUser().getUser();
         param.setCompanyId(user.getCompanyId());
+       if (user.getUserType().equals("01")){
+           param.setUserId(user.getUserId());
+       }
         startPage();
         List<MergedOrderVO> list = mergedOrderService.selectMergedOrderList(param);
         for (MergedOrderVO vo : list) {

+ 43 - 11
fs-service/src/main/java/com/fs/company/mapper/CompanyMoneyLogsMapper.java

@@ -92,10 +92,15 @@ public interface CompanyMoneyLogsMapper
 
 
     @Select({"<script> " +
-            "select l.*,c.company_name ,o.order_code,o.user_phone,p.bank_transaction_id,p.pay_type_code,p.pay_code " +
+            "select l.*,c.company_name, " +
+            "CASE WHEN l.type = 0 THEN o.order_code WHEN l.type = 1 THEN lo.order_code ELSE NULL END as order_code, " +
+            "CASE WHEN l.type = 0 THEN o.user_name WHEN l.type = 1 THEN lo.user_name ELSE NULL END as real_name, " +
+            "CASE WHEN l.type = 0 THEN o.user_phone WHEN l.type = 1 THEN lo.user_phone ELSE NULL END as user_phone, " +
+            "p.bank_transaction_id,p.pay_type_code,p.pay_code " +
             "from company_money_logs l left join company c on c.company_id=l.company_id   " +
-            "left join fs_store_order o on o.order_id=l.business_id " +
-            "left join fs_store_payment p on (o.order_code=p.business_code and p.`status`=1) "+
+            "left join fs_store_order_scrm o on (o.id=CAST(l.business_id AS UNSIGNED) and l.type=0) " +
+            "left join live_order lo on (lo.order_id=CAST(l.business_id AS UNSIGNED) and l.type=1) " +
+            "left join fs_store_payment_scrm p on (o.order_code=p.business_code and p.`status`=1 and l.type=0) "+
             "where  (l.logs_type=3 || l.logs_type=4 || l.logs_type=5 || l.logs_type=6 || l.logs_type=13 || l.logs_type=14)  " +
             "<if test = 'maps.companyId != null  '> " +
             "and l.company_id = #{maps.companyId}" +
@@ -106,8 +111,11 @@ public interface CompanyMoneyLogsMapper
             "<if test = 'maps.businessId != null  '> " +
             "and l.business_id = #{maps.businessId}" +
             "</if>" +
+            "<if test = 'maps.type != null  '> " +
+            "and l.type = #{maps.type}" +
+            "</if>" +
             "<if test = 'maps.orderCode != null and maps.orderCode != \"\"  '> " +
-            "and o.order_code = #{maps.orderCode}" +
+            "and ((l.type=0 and o.order_code = #{maps.orderCode}) or (l.type=1 and lo.order_code = #{maps.orderCode}))" +
             "</if>" +
             "<if test = 'maps.tradeCode != null and maps.tradeCode != \"\"  '> " +
             "and p.bank_transaction_id = #{maps.tradeCode}" +
@@ -116,7 +124,7 @@ public interface CompanyMoneyLogsMapper
             "and p.pay_code = #{maps.payCode}" +
             "</if>" +
             "<if test = 'maps.userPhone != null and maps.userPhone != \"\"  '> " +
-            "and o.user_phone = #{maps.userPhone}" +
+            "and ((l.type=0 and o.user_phone = #{maps.userPhone}) or (l.type=1 and lo.user_phone = #{maps.userPhone}))" +
             "</if>" +
             "<if test = 'maps.createTimeList != null    '> " +
             " AND date_format(l.create_time,'%y%m%d') &gt;= date_format(#{maps.createTimeList[0]},'%y%m%d') " +
@@ -234,15 +242,36 @@ public interface CompanyMoneyLogsMapper
 //            "order by l.logs_id desc" +
 //            "</script>"})
     @Select({"<script> " +
-            "select l.*,o.*,c.company_name,cd.dept_name,cu.nick_name as company_user_name  FROM company_money_logs l " +
-            " LEFT JOIN fs_store_order_scrm o ON o.id=l.business_id and o.company_id =l.company_id  " +
-            " LEFT JOIN company c ON c.company_id= l.company_id " +
-            " LEFT JOIN company_user cu ON cu.user_id=o.company_user_id " +
-            " LEFT JOIN company_dept cd ON cd.dept_id=cu.dept_id   " +
-            " where (l.logs_type=3||l.logs_type=4||l.logs_type=5||l.logs_type=6 ||  l.logs_type=13 ||  l.logs_type=14)" +
+            "select l.*,c.company_name,cd.dept_name,cu.nick_name as company_user_name, " +
+            "CASE WHEN l.type = 0 THEN o.order_code WHEN l.type = 1 THEN lo.order_code ELSE NULL END as order_code, " +
+            "CASE WHEN l.type = 0 THEN o.real_name WHEN l.type = 1 THEN lo.user_name ELSE NULL END as user_name, " +
+            "CASE WHEN l.type = 0 THEN o.user_phone WHEN l.type = 1 THEN lo.user_phone ELSE NULL END as user_phone, " +
+            "CASE WHEN l.type = 0 THEN o.user_address WHEN l.type = 1 THEN lo.user_address ELSE NULL END as user_address, " +
+            "CASE WHEN l.type = 0 THEN o.total_price WHEN l.type = 1 THEN lo.total_price ELSE NULL END as total_price, " +
+            "CASE WHEN l.type = 0 THEN o.pay_money WHEN l.type = 1 THEN lo.pay_money ELSE NULL END as pay_money, " +
+            "CASE WHEN l.type = 0 THEN o.pay_delivery WHEN l.type = 1 THEN lo.pay_delivery ELSE NULL END as pay_delivery, " +
+            "CASE WHEN l.type = 0 THEN CAST(o.status AS CHAR) WHEN l.type = 1 THEN CAST(lo.status AS CHAR) ELSE NULL END as status, " +
+            "CASE WHEN l.type = 0 THEN o.delivery_sn WHEN l.type = 1 THEN lo.delivery_sn ELSE NULL END as delivery_sn, " +
+            "CASE WHEN l.type = 0 THEN CAST(o.delivery_pay_status AS CHAR) WHEN l.type = 1 THEN CAST(lo.delivery_pay_status AS CHAR) ELSE NULL END as delivery_pay_status, " +
+            "CASE WHEN l.type = 0 THEN o.delivery_time WHEN l.type = 1 THEN lo.delivery_time ELSE NULL END as delivery_time, " +
+            "CASE WHEN l.type = 0 THEN o.delivery_pay_time WHEN l.type = 1 THEN lo.delivery_pay_time ELSE NULL END as delivery_pay_time, " +
+            "CASE WHEN l.type = 0 THEN null WHEN l.type = 1 THEN NULL ELSE NULL END as package_name, " +
+            "CASE WHEN l.type = 0 THEN null WHEN l.type = 1 THEN NULL ELSE NULL END as package_second_name, " +
+            "CASE WHEN l.type = 0 THEN null WHEN l.type = 1 THEN lo.pay_type ELSE NULL END as pay_type " +
+            "FROM company_money_logs l " +
+            "LEFT JOIN fs_store_order_scrm o ON (o.id=CAST(l.business_id AS UNSIGNED) and o.company_id=l.company_id and l.type=0) " +
+            "LEFT JOIN live_order lo ON (lo.order_id=CAST(l.business_id AS UNSIGNED) and lo.company_id=l.company_id and l.type=1) " +
+            "LEFT JOIN company c ON c.company_id= l.company_id " +
+            "LEFT JOIN company_user cu ON (cu.user_id=CASE WHEN l.type=0 THEN o.company_user_id WHEN l.type=1 THEN lo.company_user_id ELSE NULL END) " +
+            "LEFT JOIN company_dept cd ON cd.dept_id=cu.dept_id   " +
+            "LEFT JOIN fs_store_payment_scrm p ON (p.business_code=o.order_code and p.status=1 and l.type=0) " +
+            "where (l.logs_type=3||l.logs_type=4||l.logs_type=5||l.logs_type=6 ||  l.logs_type=13 ||  l.logs_type=14)" +
             "<if test = 'maps.companyId != null  '> " +
             "and l.company_id = #{maps.companyId}" +
             "</if>" +
+            "<if test = 'maps.orderType != null  '> " +
+            "and l.type = #{maps.orderType}" +
+            "</if>" +
             "<if test = 'maps.createTimeList != null    '> " +
             " AND date_format(l.create_time,'%y%m%d') &gt;= date_format(#{maps.createTimeList[0]},'%y%m%d') " +
             " AND date_format(l.create_time,'%y%m%d') &lt;= date_format(#{maps.createTimeList[1]},'%y%m%d') " +
@@ -335,6 +364,9 @@ public interface CompanyMoneyLogsMapper
             "<if test = 'maps.companyId != null  '> " +
             "and l.company_id = #{maps.companyId}" +
             "</if>" +
+            "<if test = 'maps.orderType != null  '> " +
+            "and l.type = #{maps.orderType}" +
+            "</if>" +
             "<if test = 'maps.createTimeList != null    '> " +
             " AND date_format(l.create_time,'%y%m%d') &gt;= date_format(#{maps.createTimeList[0]},'%y%m%d') " +
             " AND date_format(l.create_time,'%y%m%d') &lt;= date_format(#{maps.createTimeList[1]},'%y%m%d') " +

+ 9 - 1
fs-service/src/main/java/com/fs/company/service/impl/CompanyMoneyLogsServiceImpl.java

@@ -238,8 +238,16 @@ public class CompanyMoneyLogsServiceImpl implements ICompanyMoneyLogsService
                     }
                 }
             }
+            String fileName = "订单明细";
+            if (param.getOrderType() != null) {
+                if (param.getOrderType() == 0) {
+                    fileName = "商城订单明细";
+                } else if (param.getOrderType() == 1) {
+                    fileName = "直播订单明细";
+                }
+            }
             ExcelUtil<CompanyMoneyLogsExport1VO> util = new ExcelUtil<CompanyMoneyLogsExport1VO>(CompanyMoneyLogsExport1VO.class);
-            AjaxResult result =  util.exportExcel(list, "商城订单");
+            AjaxResult result =  util.exportExcel(list, fileName);
             FsExportTask task=fsExportTaskMapper.selectFsExportTaskByTaskId(param.getTaskId());
             task.setFinishTime(new Date());
             task.setStatus(1);

+ 1 - 1
fs-service/src/main/java/com/fs/company/vo/CompanyMoneyLogsVO.java

@@ -68,5 +68,5 @@ public class CompanyMoneyLogsVO implements Serializable
 
     //支付类型
     private String payTypeCode;
-
+    private int type;
 }

+ 6 - 0
fs-service/src/main/java/com/fs/fastGpt/domain/FastGptRole.java

@@ -78,4 +78,10 @@ public class FastGptRole extends BaseEntity
      * 是否禁止时段回复 0是不开启禁止  1是开启禁止 默认为1
      */
     private Integer forbidStatus;
+
+    //是否给新客户发送课程 0不发 1发
+    private Integer sendCourseStatus;
+
+    //课程Id
+    private Long courseId;
 }

+ 5 - 1
fs-service/src/main/java/com/fs/fastGpt/mapper/FastGptRoleMapper.java

@@ -1,6 +1,8 @@
 package com.fs.fastGpt.mapper;
 
 import java.util.List;
+
+import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.fastGpt.domain.FastGptRole;
 import com.fs.fastGpt.vo.FastGptRoleVO;
 import com.fs.fastGpt.vo.FastgptEventLogTotalVo;
@@ -88,7 +90,7 @@ public interface FastGptRoleMapper
 
     @Select("select id dictValue,name dictLabel from fastgpt_role_type ")
     List<OptionsVO> selectFastGptRoleType();
-    @Select("select r.role_id, r.role_name,t.contact_info,r.company_id, r.create_time, r.update_time, r.role_type, r.mode_config_json, r.mode, r.kf_id, r.kf_url, r.avatar, r.kf_media_id,r.reminder_words, r.bind_corp_id,r.channel_type from fastgpt_role r LEFT JOIN fastgpt_role_type t on t.id =r.role_type where role_id = #{roleId}")
+    @Select("select r.role_id, r.role_name,t.contact_info,r.company_id, r.create_time, r.update_time, r.role_type, r.mode_config_json, r.mode, r.kf_id, r.kf_url, r.avatar, r.kf_media_id,r.reminder_words, r.bind_corp_id,r.channel_type,r.send_course_status,r.course_id from fastgpt_role r LEFT JOIN fastgpt_role_type t on t.id =r.role_type where role_id = #{roleId}")
     FastGptRole selectFastGptRoleTypeByRoleId(Long roleId);
 
     List<FastGptRole> selectFastGptRoleByRoleIds(@Param("roleIds") List<Long> roleIds);
@@ -114,4 +116,6 @@ public interface FastGptRoleMapper
             "        </where>" +
             "</script> ")
     List<FastGptRoleVO> selectFastGptRoleListVONew(FastGptRole fastGptRole);
+
+    List<FsUserCourseVideo> selectAllCourseList(@Param("companyId") Long companyId);
 }

+ 2 - 0
fs-service/src/main/java/com/fs/fastGpt/service/IFastGptRoleService.java

@@ -3,6 +3,7 @@ package com.fs.fastGpt.service;
 import java.util.List;
 
 import com.fs.common.core.domain.R;
+import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.fastGpt.domain.FastGptRole;
 import com.fs.fastGpt.vo.FastGptRoleDataVO;
 import com.fs.fastGpt.vo.FastGptRoleVO;
@@ -83,4 +84,5 @@ public interface IFastGptRoleService
 
     List<FastGptRoleVO> selectFastGptRoleListVONew(FastGptRole fastGptRole);
 
+    List<FsUserCourseVideo> selectAllCourseList(Long companyId);
 }

+ 7 - 0
fs-service/src/main/java/com/fs/fastGpt/service/impl/FastGptRoleServiceImpl.java

@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.fs.common.BeanCopyUtils;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
+import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.fastGpt.domain.FastGptRoleTag;
 import com.fs.fastGpt.mapper.FastGptRoleTagMapper;
 import com.fs.fastGpt.vo.FastGptRoleDataVO;
@@ -58,6 +59,7 @@ public class FastGptRoleServiceImpl implements IFastGptRoleService
 
         FastGptRole role = fastGptRoleMapper.selectFastGptRoleByRoleId(roleId);
 
+        role.setSendCourseStatus(role.getSendCourseStatus() == null?0:role.getSendCourseStatus());
         FastGptRoleTag fastGptRoleTag=new FastGptRoleTag();
         fastGptRoleTag.setRoleId(roleId);
 
@@ -253,5 +255,10 @@ public class FastGptRoleServiceImpl implements IFastGptRoleService
         return fastGptRoleMapper.selectFastGptRoleListVONew(fastGptRole);
     }
 
+    @Override
+    public List<FsUserCourseVideo> selectAllCourseList(Long companyId) {
+        return fastGptRoleMapper.selectAllCourseList(companyId);
+    }
+
 
 }

+ 2 - 2
fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderMapper.java

@@ -367,7 +367,7 @@ public interface FsStoreOrderMapper
 
     @Select("select so.*,st.store_name,us.nick_name,us.phone,p.patient_age,p.patient_gender,p.patient_descs,p.patient_name," +
             "d.doctor_name,fp.prescribe_code,fd.doctor_name follow_doctor_name,c.company_name,cu.user_name company_user_name,pat.relation  " +
-            "FROM fs_store_order so LEFT JOIN fs_store st ON so.store_id =st.store_id " +
+            "FROM fs_store_order_scrm so LEFT JOIN fs_store_scrm st ON so.store_id =st.store_id " +
             "LEFT JOIN fs_user us ON us.user_id=so.user_id " +
             "LEFT JOIN fs_prescribe p ON p.prescribe_id =so.prescribe_id " +
             "LEFT JOIN fs_doctor d ON p.doctor_id= d.doctor_id " +
@@ -375,7 +375,7 @@ public interface FsStoreOrderMapper
             "LEFT JOIN company c on c.company_id =so.company_id " +
             "LEFT JOIN company_user cu on cu.user_id=so.company_user_id " +
             "LEFT JOIN fs_doctor fd on so.follow_doctor_id =fd.doctor_id " +
-            "LEFT JOIN fs_patient pat ON pat.patient_id=p.patient_id  WHERE so.is_del=0  and so.order_id= #{orderId}")
+            "LEFT JOIN fs_patient pat ON pat.patient_id=p.patient_id  WHERE so.is_del=0  and so.id= #{orderId}")
     FsStoreOrderVO selectFsStoreOrderByOrderIdVO(@Param("orderId") Long orderId);
 
     @Update("update fs_store_order set status=-3 where order_id=#{orderId}")

+ 1 - 0
fs-service/src/main/java/com/fs/his/param/FsCompanyMoneyLogsExportParam.java

@@ -10,6 +10,7 @@ public class FsCompanyMoneyLogsExportParam  implements Serializable {
     private Long companyId;
     private Integer logsType;
     private Integer type;//0 全部 1明细
+    private Integer orderType;//订单类型:0=商城订单 1=直播订单 null=全部
     private Long taskId;//任务ID
     private String createTimeRange;
 

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStorePaymentScrmMapper.java

@@ -367,6 +367,9 @@ public interface FsStorePaymentScrmMapper
     @Select("select * from fs_store_payment_scrm where trade_no=#{tradeNo}")
     FsStorePaymentScrm selectFsStorePaymentByTradeNo(String tradeNo);
 
+    @Select("select * from fs_store_payment_scrm where status = 0 and create_time < NOW() - INTERVAL 5 MINUTE AND create_time > NOW() - INTERVAL 60 MINUTE ")
+    List<FsStorePaymentScrm> selectFsStorePaymentByAll();
+
     @Select("select * from fs_store_payment_scrm where business_type=#{type} and  business_order_id=#{business_order_id} and status=1")
     List<FsStorePaymentScrm> selectFsStorePaymentByPay(@Param("type")int type, @Param("business_order_id") Long business_order_id);
 

+ 1 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStorePaymentScrmService.java

@@ -97,6 +97,7 @@ public interface IFsStorePaymentScrmService
     List<FsStorePaymentScrm> selectFsStorePaymentByOrder(Long orderId);
 
     FsStorePaymentScrm selectFsStorePaymentByTradeNo(String tradeNo);
+    List<FsStorePaymentScrm> selectFsStorePaymentByAll();
 
     R sendRedPacket(WxSendRedPacketParam param);
 

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java

@@ -395,6 +395,11 @@ public class FsStorePaymentScrmServiceImpl implements IFsStorePaymentScrmService
         return fsStorePaymentMapper.selectFsStorePaymentByTradeNo(tradeNo);
     }
 
+    @Override
+    public List<FsStorePaymentScrm> selectFsStorePaymentByAll() {
+        return fsStorePaymentMapper.selectFsStorePaymentByAll();
+    }
+
     @Override
     @Transactional
     public R sendRedPacket(WxSendRedPacketParam param) {

+ 140 - 6
fs-service/src/main/java/com/fs/sop/service/impl/QwSopTempServiceImpl.java

@@ -581,6 +581,143 @@ public class QwSopTempServiceImpl implements IQwSopTempService {
         fsUserCourseVideoRedPackageService.batchSaveFsUserCourseVideoRedPackage(redPackage);
     }
 
+
+    private void createSopTempRulesTwo(QwSopTemp temp, List<FsUserCourseVideo> videoList, FsUserCourse fsUserCourse) {
+        AtomicInteger i = new AtomicInteger(1);
+        Integer gap = temp.getGap();
+        List<QwSopTempDay> collect = videoList.stream().map(e -> {
+            QwSopTempDay day = new QwSopTempDay();
+            day.setTempId(temp.getId());
+            day.setDayNum(i.getAndIncrement() * gap);
+            day.setName("第" + day.getDayNum() + "天");
+            day.setSorts(day.getDayNum());
+            day.setList(new ArrayList<>());
+            List<String> timeList = new ArrayList<>();
+            if (temp.getTimeList() != null) {
+                timeList = JSON.parseArray(JSON.toJSONString(temp.getTimeList()), String.class);
+            }
+            AtomicInteger sorts = new AtomicInteger(0);
+            List<QwSopTempRules> rulesList = timeList.stream().map(time -> {
+                QwSopTempRules rules = new QwSopTempRules();
+                rules.setTempId(temp.getId());
+                rules.setName(day.getName());
+
+                if (!"河山医院".equals(cloudHostProper.getCompanyName())){
+                    if (temp.getOpenOfficial().equals("1")) {
+                        rules.setIsOfficial(sorts.get() == 0 ? "1" : "0");
+                    } else {
+                        rules.setIsOfficial("0");
+                    }
+
+                    if (day.getDayNum() == 1 && sorts.get() == 0 && temp.getOpenOfficial().equals("1")) {
+                        rules.setTime("01:05");
+                    } else {
+                        rules.setTime(time);
+                    }
+                }else {
+                    rules.setIsOfficial("0");
+                    rules.setTime(time);
+                }
+
+                if (temp.getOpenIsAtAll() != null && temp.getOpenIsAtAll().equals("1")){
+                    rules.setIsAtAll(1);
+                }else {
+                    rules.setIsAtAll(0);
+                }
+
+                rules.setContentType(2);
+                rules.setType(2);
+                rules.setCourseType(0);
+                rules.setCourseId(e.getCourseId());
+                rules.setVideoId(e.getVideoId());
+                // 设置消息类型
+
+                QwSopTempContent content = new QwSopTempContent();
+                content.setTempId(temp.getId());
+                content.setContentType(3);
+                QwSopTempSetting2.Content.Setting setting = new QwSopTempSetting2.Content.Setting();
+                setting.setLinkTitle(e.getTitle());
+                setting.setMiniprogramTitle(e.getTitle());
+
+                //用课节图片做封面
+                if ("今正科技".equals(cloudHostProper.getCompanyName())) {
+                    setting.setMiniprogramPicUrl(!StringUtil.isNullOrEmpty(e.getThumbnail()) ? e.getThumbnail() : fsUserCourse.getImgUrl());
+                    setting.setLinkImageUrl(!StringUtil.isNullOrEmpty(e.getThumbnail()) ? e.getThumbnail() : fsUserCourse.getImgUrl());
+                } else {
+                    setting.setMiniprogramPicUrl(fsUserCourse.getImgUrl());
+                    setting.setLinkImageUrl(fsUserCourse.getImgUrl());
+
+                }
+
+                setting.setIsBindUrl(1);
+                setting.setLinkDescribe(e.getTitle());
+                setting.setContentType("4");
+                content.setContent(JSON.toJSONString(setting));
+                content.setIsBindUrl(1);
+                List<QwSopTempContent> qwSopTempContents = new ArrayList<>();
+                qwSopTempContents.add(content);
+
+                QwSopTempContent content3 = new QwSopTempContent();
+                content3.setTempId(temp.getId());
+                content3.setContentType(3);
+
+                if (!temp.getTimeDesc().isEmpty()){
+
+                    QwSopTempSetting2.Content.Setting setting3 = new QwSopTempSetting2.Content.Setting();
+                    setting3.setValue(temp.getTimeDesc().get(sorts.get()));
+                    setting3.setContentType("1");
+                    content3.setContent(JSON.toJSONString(setting3));
+
+                    qwSopTempContents.add(content3);
+
+                }
+
+
+                rules.setSorts(sorts.getAndIncrement());
+                if (rules.getSorts() == 0) {
+                    rules.setCourseType(0);
+                } else if (rules.getSorts() == 1) {
+                    rules.setCourseType(1);
+                } else {
+                    rules.setCourseType(4);
+                }
+                rules.setList(qwSopTempContents);
+                return rules;
+            }).collect(Collectors.toList());
+            day.getList().addAll(rulesList);
+            return day;
+        }).collect(Collectors.toList());
+        qwSopTempDayService.addOrUpdateBatch(collect);
+        List<QwSopTempRules> ruleList = collect.stream().flatMap(e -> e.getList().stream().peek(r -> r.setDayId(e.getId()))).collect(Collectors.toList());
+        qwSopTempRulesService.saveList(ruleList);
+        List<QwSopTempContent> contentList = ruleList.stream().flatMap(e -> e.getList().stream().peek(r -> {
+            r.setDayId(e.getDayId());
+            r.setRulesId(e.getId());
+        })).collect(Collectors.toList());
+        qwSopTempContentService.saveList(contentList);
+        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("course.config");
+        CourseConfig courseConfig = JSON.parseObject(sysConfig.getConfigValue(), CourseConfig.class);
+        List<Long> videoIdList = PubFun.listToNewList(ruleList, QwSopTempRules::getVideoId);
+        Map<Long, Optional<BigDecimal>> redMap;
+        if (!videoIdList.isEmpty()) {
+            List<FsUserCourseVideoRedPackage> redPackageList = fsUserCourseVideoRedPackageService.listByCompanyIdAndVideoIds(temp.getCompanyId(), videoIdList);
+            redMap = redPackageList.stream().collect(Collectors.groupingBy(FsUserCourseVideoRedPackage::getVideoId, Collectors.mapping(FsUserCourseVideoRedPackage::getRedPacketMoney, Collectors.reducing((e1, e2) -> e1))));
+        } else {
+            redMap = new HashMap<>();
+        }
+
+        List<FsUserCourseVideoRedPackage> redPackage = ruleList.stream().filter(e -> e.getVideoId() != null && e.getSorts() == 0).map(e -> {
+            FsUserCourseVideoRedPackage red = new FsUserCourseVideoRedPackage();
+            red.setCompanyId(temp.getCompanyId());
+            red.setVideoId(e.getVideoId());
+            red.setRedPacketMoney(redMap.getOrDefault(e.getVideoId(), Optional.ofNullable(courseConfig.getRedPackageMoney())).orElse(BigDecimal.ZERO));
+            red.setRuleId(e.getId());
+            red.setDataType(3);
+            return red;
+        }).collect(Collectors.toList());
+        fsUserCourseVideoRedPackageService.batchSaveFsUserCourseVideoRedPackage(redPackage);
+    }
+
     @Override
     public List<QwSopTempRedPackageVo> redList(String id) {
         List<QwSopTempDay> dayList = qwSopTempRulesService.listByTempIdAll(id);
@@ -691,17 +828,14 @@ public class QwSopTempServiceImpl implements IQwSopTempService {
                 }
                 QwSopTempDay qwSopTempDay = first.get();
 
-                // 构造timeList timeDesc time
-                sopTemp.setTime(LocalTime.now());
-
                 sopTemp.setTimeList(tempRulesList.stream()
-                        .filter(e -> e.getTempId().equals(sopTemp.getId()) && Objects.equals(e.getIsOfficial(), "0")
+                        .filter(e -> e.getTempId().equals(sopTemp.getId())
                                 && Objects.equals(e.getDayId(), qwSopTempDay.getId())
                         ).map(QwSopTempRules::getTime)
                         .collect(Collectors.toList()));
 
                 sopTemp.setTimeDesc(contentList.stream().filter(e -> e.getTempId().equals(sopTemp.getId())
-                                && Objects.isNull(e.getIsBindUrl())
+                                && Objects.equals(1,e.getContentType())
                                 && Objects.equals(qwSopTempDay.getId(), e.getDayId())
                         )
                         .map(m -> JSONObject.parseObject(m.getContent()).getString("value")).collect(Collectors.toList()));
@@ -711,7 +845,7 @@ public class QwSopTempServiceImpl implements IQwSopTempService {
 
                 qwSopTempMapper.updateQwSopTemp(sopTemp);
 
-                createSopTempRules(sopTemp, addVideoList, fsUserCourse);
+                createSopTempRulesTwo(sopTemp, addVideoList, fsUserCourse);
 
                 // 更新排序
                 List<QwSopTempRules> newTempRulesList = qwSopTempRulesService.listByCourseIdAndTempId(courseId, teId);

+ 1 - 1
fs-service/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -646,7 +646,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
     <select id="selectQwUserListLikeName" resultType="com.fs.qw.vo.QwOptionsVO">
         select
-        concat(qw.qw_user_name,'(',qw.id,')') as dictLabel,
+        qw.qw_user_name as dictLabel,
         qw.id as dictValue
         from qw_user qw
         <where>

+ 10 - 1
fs-service/src/main/resources/mapper/fastGpt/FastGptRoleMapper.xml

@@ -25,12 +25,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="forbidSendStart"    column="forbid_send_start"    />
         <result property="forbidSendEnd"    column="forbid_send_end"    />
         <result property="forbidStatus"    column="forbid_status"    />
+        <result property="sendCourseStatus"    column="send_course_status"    />
+        <result property="courseId"    column="course_id"    />
     </resultMap>
 
     <sql id="selectFastGptRoleVo">
         select role_id, role_name,contact_info,company_id, create_time, update_time, role_type, mode_config_json,
                mode, kf_id, kf_url, avatar, kf_media_id,reminder_words, bind_corp_id,channel_type,logistics,forbid_send_start,
-               forbid_send_end,forbid_status
+               forbid_send_end,forbid_status,send_course_status,course_id
         from fastgpt_role
     </sql>
 
@@ -85,6 +87,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             role_id as roleId,role_name as roleName,mode_config_json as appKey
         from fastgpt_role
     </select>
+    <select id="selectAllCourseList" resultType="com.fs.course.domain.FsUserCourseVideo">
+        SELECT f2.video_id,f2.title FROM `fs_user_course` f1 left join fs_user_course_video f2 on f1.course_id = f2.course_id
+        where find_in_set(#{companyId},f1.company_ids)
+        ORDER BY f1.course_id,f2.video_id
+    </select>
 
 
     <insert id="insertFastGptRole" parameterType="FastGptRole" useGeneratedKeys="true" keyProperty="roleId">
@@ -143,6 +150,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="channelType != null">channel_type = #{channelType},</if>
             <if test="logistics != null">logistics = #{logistics},</if>
             <if test="forbidStatus != null">forbid_status = #{forbidStatus},</if>
+            <if test="sendCourseStatus != null">send_course_status = #{sendCourseStatus},</if>
+            <if test="courseId != null">course_id = #{courseId},</if>
         </trim>
         where role_id = #{roleId}
     </update>

+ 10 - 0
fs-service/src/main/resources/mapper/hisStore/MergedOrderMapper.xml

@@ -82,6 +82,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           <if test="maps.status != null and maps.status != ''">
             AND o.status = #{maps.status}
           </if>
+        <if test="maps.userId != null and maps.userId != ''">
+            AND o.company_user_id = #{maps.userId}
+        </if>
+
         <if test="maps.productId != null and maps.productId != ''">
             AND fspc.product_id = #{maps.productId}
         </if>
@@ -227,6 +231,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           <if test="maps.status != null and maps.status != ''">
             AND o.status = #{maps.status}
           </if>
+        <if test="maps.userId != null and maps.userId != ''">
+            AND o.company_user_id = #{maps.userId}
+        </if>
         <if test="maps.productId != null and maps.productId != ''">
             AND fspc.product_id = #{maps.productId}
         </if>
@@ -375,6 +382,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           <if test="maps.status != null and maps.status != ''">
             AND o.status = #{maps.status}
           </if>
+        <if test="maps.userId != null and maps.userId != ''">
+            AND o.company_user_id = #{maps.userId}
+        </if>
         <if test="maps.productId != null and maps.productId != ''">
             AND fspc.product_id = #{maps.productId}
         </if>