Selaa lähdekoodia

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

吴树波 2 viikkoa sitten
vanhempi
commit
34d7d9a3ff

+ 41 - 0
fs-admin/src/main/java/com/fs/hisStore/controller/FsStorePaymentScrmController.java

@@ -30,6 +30,10 @@ import com.fs.hisStore.param.FsStorePaymentParam;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.hisStore.service.IFsStorePaymentScrmService;
 import com.fs.hisStore.vo.FsStorePaymentVO;
+import com.fs.hisStore.vo.FsMiniProgramOptionVO;
+import com.fs.course.service.IFsCoursePlaySourceConfigService;
+import com.fs.course.domain.FsCoursePlaySourceConfig;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fs.system.service.ISysConfigService;
 import com.ijpay.alipay.AliPayApi;
 import com.ijpay.alipay.AliPayApiConfig;
@@ -74,6 +78,9 @@ public class FsStorePaymentScrmController extends BaseController
     private CloudHostProper cloudHostProper;
     @Autowired
     private ISysConfigService configService;
+    
+    @Autowired
+    private IFsCoursePlaySourceConfigService coursePlaySourceConfigService;
     /**
      * 查询支付明细列表
      */
@@ -104,6 +111,40 @@ public class FsStorePaymentScrmController extends BaseController
         return dataTable;
     }
 
+    /**
+     * 查询小程序列表(用于下拉选择)
+     */
+    @ApiOperation("查询小程序列表")
+    @GetMapping("/getMiniProgramList")
+    public AjaxResult getMiniProgramList()
+    {
+        try {
+            // 查询所有未删除的小程序配置(排除公众号)
+            QueryWrapper<FsCoursePlaySourceConfig> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("is_del", 0)  // 未删除
+                       .ne("type", 2)      // 不是公众号
+                       .orderByDesc("create_time");
+            
+            List<FsCoursePlaySourceConfig> configList = coursePlaySourceConfigService.list(queryWrapper);
+            
+            List<FsMiniProgramOptionVO> optionList = new java.util.ArrayList<>();
+            for (FsCoursePlaySourceConfig config : configList) {
+                FsMiniProgramOptionVO vo = new FsMiniProgramOptionVO();
+                vo.setId(config.getId());
+                vo.setName(config.getName());
+                vo.setAppid(config.getAppid());
+                vo.setType(config.getType());
+                optionList.add(vo);
+            }
+            
+            logger.info("查询小程序列表成功,数量:{}", optionList.size());
+            return AjaxResult.success(optionList);
+        } catch (Exception e) {
+            logger.error("查询小程序列表失败", e);
+            return AjaxResult.error("查询小程序列表失败:" + e.getMessage());
+        }
+    }
+
     /**
      * 导出支付明细列表
      */

+ 1 - 1
fs-admin/src/main/resources/application.yml

@@ -7,7 +7,7 @@ spring:
 #    active: dev
 #    active: druid-hdt
 #    active: druid-yzt
-    active: druid-bjczwh-test
+    active: dev
 #    active: druid-sft
 #    active: druid-fby
 #    active: dev

+ 2 - 0
fs-service/src/main/java/com/fs/course/domain/FsCourseWatchLog.java

@@ -90,5 +90,7 @@ public class FsCourseWatchLog extends BaseEntity
 
     /** im发送消息详情id */
     private Long imMsgSendDetailId;
+    /** 所属小程序id**/
+    private String appid;
 
 }

+ 2 - 1
fs-service/src/main/java/com/fs/course/param/FsUserCourseVideoAddKfUParam.java

@@ -69,5 +69,6 @@ public class FsUserCourseVideoAddKfUParam implements Serializable {
     private String nickName;
 
     private Integer isOpenCourse;
-
+    /** 所属小程序id**/
+    private String appid;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -865,6 +865,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             if (log.getUserId()==null||log.getUserId().equals(0L) || !log.getUserId().equals(param.getUserId())){
                 log.setUserId(param.getUserId());
             }
+            //跟新所属小程序ID
+            log.setAppid(param.getAppid());
             log.setUpdateTime(new Date());
             courseWatchLogMapper.updateFsCourseWatchLog(log);
 

+ 1 - 0
fs-service/src/main/java/com/fs/course/vo/FsCourseWatchLogListVO.java

@@ -137,5 +137,6 @@ public class FsCourseWatchLogListVO extends BaseEntity
      */
     private Long imMsgSendDetailId;
 
+    private String appid;
 
 }

+ 5 - 2
fs-service/src/main/java/com/fs/hisStore/mapper/FsStorePaymentScrmMapper.java

@@ -74,7 +74,7 @@ public interface FsStorePaymentScrmMapper
     FsStorePaymentScrm selectFsStorePaymentByCode(String payCode);
 
     @Select({"<script> " +
-            "select p.*,o.order_code,c.company_name,d.dept_name,u.phone as user_phone,cu.nick_name as company_user_nick_name,cu.user_name as company_user_name  from fs_store_payment_scrm p left join company_user cu on p.company_user_id=cu.user_id left join fs_user u on u.user_id=p.user_id left join company_dept d on d.dept_id=p.dept_id left join company c on c.company_id=p.company_id left join fs_store_order_scrm o on o.id=p.order_id   " +
+            "select p.*,o.order_code,c.company_name,d.dept_name,u.phone as user_phone,cu.nick_name as company_user_nick_name,cu.user_name as company_user_name,fcpsc.name as app_name  from fs_store_payment_scrm p left join company_user cu on p.company_user_id=cu.user_id left join fs_user u on u.user_id=p.user_id left join company_dept d on d.dept_id=p.dept_id left join company c on c.company_id=p.company_id left join fs_store_order_scrm o on o.id=p.order_id left join fs_course_play_source_config fcpsc on p.app_id=fcpsc.appid   " +
             "where 1=1 " +
             "<if test = 'maps.payCode != null and  maps.payCode !=\"\"    '> " +
             "and p.pay_code like CONCAT('%',#{maps.payCode},'%') " +
@@ -144,7 +144,7 @@ public interface FsStorePaymentScrmMapper
     List<FsStorePaymentVO> selectFsStorePaymentListQuery(@Param("maps") FsStorePaymentParam fsStorePayment);
 
     @Select({"<script> " +
-            "select  SUM(CASE WHEN p.status IN (1, -1) AND p.pay_money IS NOT NULL  THEN p.pay_money ELSE 0 END) AS  totalPaymentAmount, SUM(CASE WHEN p.status = '-1' AND p.refund_audit_status = '2' AND refund_money IS NOT NULL THEN p.refund_money ELSE 0 END) AS totalRefundAmount  from fs_store_payment_scrm p left join company_user cu on p.company_user_id=cu.user_id left join fs_user u on u.user_id=p.user_id left join company_dept d on d.dept_id=p.dept_id left join company c on c.company_id=p.company_id left join fs_store_order_scrm o on o.id=p.order_id   " +
+            "select  SUM(CASE WHEN p.status IN (1, -1) AND p.pay_money IS NOT NULL  THEN p.pay_money ELSE 0 END) AS  totalPaymentAmount, SUM(CASE WHEN p.status = '-1' AND refund_money IS NOT NULL THEN p.refund_money ELSE 0 END) AS totalRefundAmount  from fs_store_payment_scrm p left join company_user cu on p.company_user_id=cu.user_id left join fs_user u on u.user_id=p.user_id left join company_dept d on d.dept_id=p.dept_id left join company c on c.company_id=p.company_id left join fs_store_order_scrm o on o.id=p.order_id   " +
             "where 1=1 " +
             "<if test = 'maps.payCode != null and  maps.payCode !=\"\"    '> " +
             "and p.pay_code like CONCAT('%',#{maps.payCode},'%') " +
@@ -170,6 +170,9 @@ public interface FsStorePaymentScrmMapper
             "<if test = 'maps.companyId != null    '> " +
             "and p.company_id =#{maps.companyId} " +
             "</if>" +
+            "<if test = 'maps.appId != null    '> " +
+            "and p.app_id =#{maps.appId} " +
+            "</if>" +
             "<if test = 'maps.params != null and maps.params != \"\"   '> " +
             "<if test = 'maps.params.beginTime != null and maps.params.beginTime != \"\"   '> " +
             " AND date_format(p.pay_time,'%y%m%d') &gt;= date_format(#{maps.params.beginTime},'%y%m%d') " +

+ 28 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsMiniProgramOptionVO.java

@@ -0,0 +1,28 @@
+package com.fs.hisStore.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 小程序选项VO
+ *
+ * @author fs
+ * @date 2025-11-21
+ */
+@Data
+public class FsMiniProgramOptionVO implements Serializable {
+
+    @ApiModelProperty("小程序ID")
+    private Long id;
+
+    @ApiModelProperty("小程序名称")
+    private String name;
+
+    @ApiModelProperty("小程序appid")
+    private String appid;
+
+    @ApiModelProperty("类型 1小程序 2公众号")
+    private Integer type;
+}

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStorePaymentVO.java

@@ -107,4 +107,6 @@ public class FsStorePaymentVO implements Serializable
     private String refundAuditRemark;
     /**所属小程序**/
     private String appId;
+    /**小程序名称**/
+    private String appName;
 }

+ 2 - 2
fs-service/src/main/resources/application-dev.yml

@@ -43,7 +43,7 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                    url: jdbc:mysql://139.186.77.83:3306/ylrz_his_scrm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
+                    url: jdbc:mysql://139.186.77.83:3306/bjcz_fs_his_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
                     username: Rtroot
                     password: Rtroot
                 # 初始连接数
@@ -91,7 +91,7 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                    url: jdbc:mysql://139.186.77.83:3306/his_sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    url: jdbc:mysql://139.186.77.83:3306/bjcz_fs_his_sop_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                     username: Rtroot
                     password: Rtroot
                 # 初始连接数

+ 5 - 5
fs-service/src/main/resources/application-druid-bjczwh-test.yml

@@ -39,9 +39,9 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                  url: jdbc:mysql://rm-bp1jo9h8iua0h68c9ko.mysql.rds.aliyuncs.com:3306/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                  username: root
-                  password: Ylrz_1q2w3e4r5t6y
+                    url: jdbc:mysql://1.95.177.188:3306/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: czwh
+                    password: Ylrz_1q2w3e4r5t6y
                 # 从库数据源
                 slave:
                     # 从数据源开关/默认关闭
@@ -94,8 +94,8 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                    url: jdbc:mysql://rm-bp1jo9h8iua0h68c9ko.mysql.rds.aliyuncs.com:3306/fs_his_sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                    username: root
+                    url: jdbc:mysql://1.95.177.188:3306/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: czwh
                     password: Ylrz_1q2w3e4r5t6y
                 # 初始连接数
                 initialSize: 5

+ 1 - 1
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -57,7 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectFsCourseWatchLogListVO" resultType="com.fs.course.vo.FsCourseWatchLogListVO">
         select l.log_id,l.project,l.period_id,l.user_id,uc.course_name,v.title as video_name,qec.avatar as external_user_avatar,
-        l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,
+        l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,l.appid,
         cu.nick_name as company_user_name ,l.send_type,l.create_time,l.update_time,l.last_heartbeat_time,
         CASE 
             WHEN qu.qw_user_name IS NOT NULL AND qu.qw_user_name LIKE '{%' THEN JSON_UNQUOTE(JSON_EXTRACT(qu.qw_user_name, '$.name'))

+ 6 - 5
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -332,7 +332,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectFsUserPageListNew" resultType="com.fs.store.vo.h5.FsUserPageListVO">
-        SELECT
+        SELECT DISTINCT
         fs_user.user_id,
         fs_user.nick_name as nickname,
         fs_user.avatar,
@@ -345,13 +345,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ucu.company_id,
         ucu.project_id,
         fs_user.integral,
-        fucp.period_name,
+        (SELECT fucp2.period_name FROM fs_course_watch_log fcwl2 
+         LEFT JOIN fs_user_course_period fucp2 ON fcwl2.period_id = fucp2.period_id 
+         WHERE fcwl2.user_id = fs_user.user_id 
+         ORDER BY fcwl2.last_heartbeat_time DESC LIMIT 1) as period_name,
         if(fs_user.pay_count>0,1,0) as isBuy
         FROM
         fs_user
         left join fs_user_company_user ucu on ucu.user_id = fs_user.user_id
-        left join fs_course_watch_log fcwl on fs_user.user_id = fcwl.user_id
-        left join fs_user_course_period fucp on fcwl.period_id = fucp.period_id
         <where>
             fs_user.is_del = 0
             <if test="userId != null">
@@ -1818,7 +1819,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="userId != null and userId != 0 ">
             AND l.company_user_id = #{userId}
         </if>
-        <if test="companyId != null and companyId == 0 ">
+        <if test="userId != null and userId == 0 ">
             and l.company_id = #{companyId}
         </if>
         <if test="periodId != null and periodId != ''">