Parcourir la source

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

jzp il y a 1 jour
Parent
commit
0396fc5e7a

+ 5 - 3
fs-doctor-app/src/main/java/com/fs/app/controller/FsPrescribeController.java

@@ -17,6 +17,8 @@ import com.fs.his.service.IFsExportTaskService;
 import com.fs.his.service.IFsPrescribeService;
 import com.fs.his.vo.FsPrescribeListVO;
 import com.fs.his.vo.FsPrescribeVO;
+import com.fs.hisStore.domain.FsUserInformationCollection;
+import com.fs.hisStore.service.IFsUserInformationCollectionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +45,9 @@ public class FsPrescribeController extends BaseController
     @Autowired
     private FsPatientMapper fsPatientMapper;
 
+    @Autowired
+    private IFsUserInformationCollectionService fsUserInformationCollectionService;
+
     /**
      * 确认处方
      * @param param 处方
@@ -196,7 +201,4 @@ public class FsPrescribeController extends BaseController
         return toAjax(fsPrescribeService.deleteFsPrescribeByPrescribeIds(prescribeIds));
     }
 
-
-
-
 }

+ 7 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/UserInfoCollectionController.java

@@ -44,4 +44,11 @@ public class UserInfoCollectionController extends AppBaseController{
     public R doctorConfirm(@RequestBody FsUserInformationCollection collection){
         return userInfoCollectionService.doctorConfirm(collection);
     }
+
+    //用户采集信息详情
+    @GetMapping("/getCollectionByUserId/{userId}")
+    public R getCollectionByUserId(@PathVariable("userId") Long userId){
+        FsUserInformationCollectionVO detail = userInfoCollectionService.getCollectionByUserId(userId);
+        return R.ok().put("data", detail);
+    }
 }

+ 11 - 0
fs-service/src/main/java/com/fs/company/domain/CompanyUser.java

@@ -177,6 +177,17 @@ public class CompanyUser extends BaseEntity
     /** 是否允许所有方式注册会员,1-是,0-否,默认1(用于个微注册会员) */
     private Integer isAllowedAllRegister;
 
+    /** 是否允许客户能在其他销售那里能看,1-是,2-否,默认1(用于企业微信客户和销售之间的关系) */
+    private Integer isAllowedEveryoneView;
+
+    public Integer getIsAllowedEveryoneView() {
+        return isAllowedEveryoneView;
+    }
+
+    public void setIsAllowedEveryoneView(Integer isAllowedEveryoneView) {
+        this.isAllowedEveryoneView = isAllowedEveryoneView;
+    }
+
     public String getMaOpenId() {
         return maOpenId;
     }

+ 64 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCompanyUserQw.java

@@ -0,0 +1,64 @@
+package com.fs.course.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 微信用户和销售关系-企业微信自动的对象 fs_user_company_user_qw
+ *
+ * @author fs
+ * @date 2025-10-23
+ */
+@Data
+public class FsUserCompanyUserQw {
+
+    /** id */
+    private Long id;
+
+    /** 用户id(关联fs_user表user_id) */
+    @Excel(name = "用户id", readConverterExp = "关=联fs_user表user_id")
+    private Long userId;
+
+    /** 销售id */
+    @Excel(name = "销售id")
+    private Long companyUserId;
+
+    /** 公司ID */
+    @Excel(name = "公司ID")
+    private Long companyId;
+
+    /** 是否重粉,1-是;0-否 */
+    @Excel(name = "是否重粉,1-是;0-否")
+    private Integer isRepeatFans;
+
+    /** 课程项目ID */
+    @Excel(name = "课程项目ID")
+    private Long projectId;
+
+    /** 企微用户ID */
+    @Excel(name = "企微用户ID")
+    private Long qwUserId;
+
+    /** 企微外部联系人ID */
+    @Excel(name = "企微外部联系人ID")
+    private Long qwExternalContactId;
+
+    /** 企微主体ID */
+    @Excel(name = "企微主体ID")
+    private Long qwCompanyId;
+
+    /** 状态 0小黑屋 1正常 2拉黑 */
+    @Excel(name = "状态 0小黑屋 1正常 2拉黑")
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+}

+ 61 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCompanyUserQwMapper.java

@@ -0,0 +1,61 @@
+package com.fs.course.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.course.domain.FsUserCompanyUserQw;
+
+/**
+ * 微信用户和销售关系-企业微信自动的Mapper接口
+ * 
+ * @author fs
+ * @date 2025-10-23
+ */
+public interface FsUserCompanyUserQwMapper extends BaseMapper<FsUserCompanyUserQw>{
+    /**
+     * 查询微信用户和销售关系-企业微信自动的
+     * 
+     * @param id 微信用户和销售关系-企业微信自动的主键
+     * @return 微信用户和销售关系-企业微信自动的
+     */
+    FsUserCompanyUserQw selectFsUserCompanyUserQwById(Long id);
+
+    /**
+     * 查询微信用户和销售关系-企业微信自动的列表
+     * 
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 微信用户和销售关系-企业微信自动的集合
+     */
+    List<FsUserCompanyUserQw> selectFsUserCompanyUserQwList(FsUserCompanyUserQw fsUserCompanyUserQw);
+
+    /**
+     * 新增微信用户和销售关系-企业微信自动的
+     * 
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 结果
+     */
+    int insertFsUserCompanyUserQw(FsUserCompanyUserQw fsUserCompanyUserQw);
+
+    /**
+     * 修改微信用户和销售关系-企业微信自动的
+     * 
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 结果
+     */
+    int updateFsUserCompanyUserQw(FsUserCompanyUserQw fsUserCompanyUserQw);
+
+    /**
+     * 删除微信用户和销售关系-企业微信自动的
+     * 
+     * @param id 微信用户和销售关系-企业微信自动的主键
+     * @return 结果
+     */
+    int deleteFsUserCompanyUserQwById(Long id);
+
+    /**
+     * 批量删除微信用户和销售关系-企业微信自动的
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteFsUserCompanyUserQwByIds(Long[] ids);
+}

+ 75 - 0
fs-service/src/main/java/com/fs/course/service/IFsUserCompanyUserQwService.java

@@ -0,0 +1,75 @@
+package com.fs.course.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.course.domain.FsUserCompanyUser;
+import com.fs.course.domain.FsUserCompanyUserQw;
+
+/**
+ * 微信用户和销售关系-企业微信自动的Service接口
+ *
+ * @author fs
+ * @date 2025-10-23
+ */
+public interface IFsUserCompanyUserQwService extends IService<FsUserCompanyUserQw>{
+    /**
+     * 查询微信用户和销售关系-企业微信自动的
+     *
+     * @param id 微信用户和销售关系-企业微信自动的主键
+     * @return 微信用户和销售关系-企业微信自动的
+     */
+    FsUserCompanyUserQw selectFsUserCompanyUserQwById(Long id);
+
+    FsUserCompanyUserQw selectByUserIdAndProjectId(Long userId, Long projectId);
+
+    /**
+     * 绑定客户-项目-销售关系
+     *
+     * @param userId        小程序id
+     * @param projectId     项目ID
+     * @param companyId     公司ID
+     * @param companyUserId 销售ID
+     * @param status        状态 1正常 0小黑屋
+     */
+    FsUserCompanyUserQw bindRelationship(Long userId, Long projectId, Long companyId, Long companyUserId, int status);
+
+    /**
+     * 查询微信用户和销售关系-企业微信自动的列表
+     *
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 微信用户和销售关系-企业微信自动的集合
+     */
+    List<FsUserCompanyUserQw> selectFsUserCompanyUserQwList(FsUserCompanyUserQw fsUserCompanyUserQw);
+
+    /**
+     * 新增微信用户和销售关系-企业微信自动的
+     *
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 结果
+     */
+    int insertFsUserCompanyUserQw(FsUserCompanyUserQw fsUserCompanyUserQw);
+
+    /**
+     * 修改微信用户和销售关系-企业微信自动的
+     *
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 结果
+     */
+    int updateFsUserCompanyUserQw(FsUserCompanyUserQw fsUserCompanyUserQw);
+
+    /**
+     * 批量删除微信用户和销售关系-企业微信自动的
+     *
+     * @param ids 需要删除的微信用户和销售关系-企业微信自动的主键集合
+     * @return 结果
+     */
+    int deleteFsUserCompanyUserQwByIds(Long[] ids);
+
+    /**
+     * 删除微信用户和销售关系-企业微信自动的信息
+     *
+     * @param id 微信用户和销售关系-企业微信自动的主键
+     * @return 结果
+     */
+    int deleteFsUserCompanyUserQwById(Long id);
+}

+ 121 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCompanyUserQwServiceImpl.java

@@ -0,0 +1,121 @@
+package com.fs.course.service.impl;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fs.common.utils.DateUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.course.domain.FsUserCompanyUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.course.mapper.FsUserCompanyUserQwMapper;
+import com.fs.course.domain.FsUserCompanyUserQw;
+import com.fs.course.service.IFsUserCompanyUserQwService;
+
+/**
+ * 微信用户和销售关系-企业微信自动的Service业务层处理
+ *
+ * @author fs
+ * @date 2025-10-23
+ */
+@Service
+public class FsUserCompanyUserQwServiceImpl extends ServiceImpl<FsUserCompanyUserQwMapper, FsUserCompanyUserQw> implements IFsUserCompanyUserQwService {
+
+    /**
+     * 查询微信用户和销售关系-企业微信自动的
+     *
+     * @param id 微信用户和销售关系-企业微信自动的主键
+     * @return 微信用户和销售关系-企业微信自动的
+     */
+    @Override
+    public FsUserCompanyUserQw selectFsUserCompanyUserQwById(Long id)
+    {
+        return baseMapper.selectFsUserCompanyUserQwById(id);
+    }
+
+    @Override
+    public FsUserCompanyUserQw selectByUserIdAndProjectId(Long userId, Long projectId) {
+        LambdaQueryWrapper<FsUserCompanyUserQw> queryWrapper = Wrappers.<FsUserCompanyUserQw>lambdaQuery()
+                .eq(FsUserCompanyUserQw::getUserId, userId)
+                .eq(FsUserCompanyUserQw::getProjectId, projectId);
+        return getOne(queryWrapper);
+    }
+
+    @Override
+    public FsUserCompanyUserQw bindRelationship(Long userId, Long projectId, Long companyId, Long companyUserId, int status) {
+        FsUserCompanyUserQw companyUserQw = new FsUserCompanyUserQw();
+        companyUserQw.setUserId(userId);
+        companyUserQw.setProjectId(projectId);
+        companyUserQw.setCompanyId(companyId);
+        companyUserQw.setCompanyUserId(companyUserId);
+        companyUserQw.setIsRepeatFans(0);
+        companyUserQw.setStatus(status);
+        companyUserQw.setCreateTime(LocalDateTime.now());
+        save(companyUserQw);
+        return companyUserQw;
+    }
+
+    /**
+     * 查询微信用户和销售关系-企业微信自动的列表
+     *
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 微信用户和销售关系-企业微信自动的
+     */
+    @Override
+    public List<FsUserCompanyUserQw> selectFsUserCompanyUserQwList(FsUserCompanyUserQw fsUserCompanyUserQw)
+    {
+        return baseMapper.selectFsUserCompanyUserQwList(fsUserCompanyUserQw);
+    }
+
+    /**
+     * 新增微信用户和销售关系-企业微信自动的
+     *
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 结果
+     */
+    @Override
+    public int insertFsUserCompanyUserQw(FsUserCompanyUserQw fsUserCompanyUserQw)
+    {
+        fsUserCompanyUserQw.setCreateTime(LocalDateTime.now());
+        return baseMapper.insertFsUserCompanyUserQw(fsUserCompanyUserQw);
+    }
+
+    /**
+     * 修改微信用户和销售关系-企业微信自动的
+     *
+     * @param fsUserCompanyUserQw 微信用户和销售关系-企业微信自动的
+     * @return 结果
+     */
+    @Override
+    public int updateFsUserCompanyUserQw(FsUserCompanyUserQw fsUserCompanyUserQw)
+    {
+
+        return baseMapper.updateFsUserCompanyUserQw(fsUserCompanyUserQw);
+    }
+
+    /**
+     * 批量删除微信用户和销售关系-企业微信自动的
+     *
+     * @param ids 需要删除的微信用户和销售关系-企业微信自动的主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsUserCompanyUserQwByIds(Long[] ids)
+    {
+        return baseMapper.deleteFsUserCompanyUserQwByIds(ids);
+    }
+
+    /**
+     * 删除微信用户和销售关系-企业微信自动的信息
+     *
+     * @param id 微信用户和销售关系-企业微信自动的主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsUserCompanyUserQwById(Long id)
+    {
+        return baseMapper.deleteFsUserCompanyUserQwById(id);
+    }
+}

+ 54 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -31,6 +31,7 @@ import com.fs.course.dto.CoursePackageDTO;
 import com.fs.course.mapper.*;
 import com.fs.course.param.*;
 import com.fs.course.param.newfs.*;
+import com.fs.course.service.IFsUserCompanyUserQwService;
 import com.fs.course.service.IFsUserCompanyUserService;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.course.service.IFsVideoResourceService;
@@ -220,6 +221,10 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     private FsCourseProductMapper courseProductMapper;
     @Autowired
     private IFsUserCompanyUserService userCompanyUserService;
+
+    @Autowired
+    private IFsUserCompanyUserQwService userCompanyUserQwService;
+
     @Autowired
     private SysDictDataMapper dictDataMapper;
 
@@ -475,7 +480,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if(oneCompanyCourse && fsUser.getQwExtId() != null){
             QwExternalContact qwExternalContact = qwExternalContactMapper.selectById(fsUser.getQwExtId());
             if(qwExternalContact.getCompanyUserId() != null && !qwExternalContact.getCompanyUserId().equals(param.getCompanyUserId())){
-                return R.error(500, "该用户("+fsUser.getUserId() + ")已成为其他销售会员");
+                return R.error(500, "该用户("+fsUser.getUserId() + ")已成为其他客服会员");
             }
         }
         Integer isRoom = param.getIsRoom();
@@ -483,7 +488,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         // 处理逻辑
         if (isRoom == null || isRoom == 0) {
             // 当 isRoom 为 null 或 0 时走 handleExt
-            return handleExt(param,msg, oneCompanyCourse);
+            return handleExt(param,msg, oneCompanyCourse,fsUser);
         } else if (isRoom == 1) {
             // 当 isRoom 为 1 时走 handleRoom
             return handleRoom(param,fsUser);
@@ -638,7 +643,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         courseWatchLogMapper.insertFsCourseWatchLog(log);
     }
 
-    private R handleExt(FsUserCourseVideoAddKfUParam param, String msg, boolean oneCompanyCourse){
+    private R handleExt(FsUserCourseVideoAddKfUParam param, String msg, boolean oneCompanyCourse,FsUser fsUser){
         if (param.getLinkType()!=null&&param.getLinkType()==1){
             if (param.getLinkId()!=null){
                 // 从数据库中查找短链对应的真实链接
@@ -661,6 +666,13 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             return R.error("链接过期");
         }
 
+//        if("益善缘".equals(signProjectName)){
+//            R result = validateSalesAndUserRelationship(param, fsUser);
+//            if (result != null) {
+//                return result;
+//            }
+//        }
+
         Long qwExternalId = param.getQwExternalId();
 
         FsCourseWatchLog log=new FsCourseWatchLog();
@@ -782,6 +794,45 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         }
     }
 
+
+    /**
+     * 验证销售和用户关系
+     * @param param 请求参数
+     * @param fsUser 用户信息
+     * @return 验证结果,null表示验证通过
+     */
+    private R validateSalesAndUserRelationship(FsUserCourseVideoAddKfUParam param, FsUser fsUser) {
+        // 判断该销售是否存在
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(param.getCompanyUserId());
+        if (companyUser == null) {
+            return R.error(405, "当前客服不存在");
+        }
+
+        if (companyUser.getIsAllowedEveryoneView() == 2) {
+            // 获取课程所属项目id
+            FsUserCourse fsUserCourse = fsUserCourseMapper.selectFsUserCourseByCourseId(param.getCourseId());
+            Long courseProject = fsUserCourse.getProject();
+            if (Objects.isNull(courseProject)) {
+                return R.error(504, "课程配置错误,项目归属为空,课程ID: " + param.getCourseId());
+            }
+
+            // 查询【用户-项目】关系
+            FsUserCompanyUserQw userCompanyUserQw = userCompanyUserQwService.selectByUserIdAndProjectId(fsUser.getUserId(), courseProject);
+
+            // 添加逻辑:如果存在fs_user表数据,但是又不存在fs_user_company_user表,则表示给他绑上(看客户更喜欢哪个销售)
+            if (Objects.isNull(userCompanyUserQw)) {
+                userCompanyUserQw = userCompanyUserQwService.bindRelationship(param.getUserId(), courseProject, companyUser.getCompanyId(), companyUser.getUserId(), 1);
+            }
+
+            // 逻辑调整:如果客户已经绑定了销售,直接提示,
+            if (!param.getCompanyUserId().equals(userCompanyUserQw.getCompanyUserId())) {
+                return R.error(500, "该用户(" + fsUser.getUserId() + ")已成为其他客服会员,请在相应客服上观看");
+            }
+        }
+
+        return null;
+    }
+
     private R addCustomerService(String qwUserById,String msg){
         String contactWay = "";
         QwUser qwUser = qwUserMapper.selectQwUserById(Long.parseLong(qwUserById));

+ 1 - 1
fs-service/src/main/java/com/fs/his/mapper/FsPatientMapper.java

@@ -95,7 +95,7 @@ public interface FsPatientMapper
     @Select("SELECT * FROM fs_patient WHERE user_id=#{userId}")
     List<FsPatientVO> selectFsPatientListByUserId(Long userId);
     @Select({"<script> " +
-            "select DISTINCT p.patient_id, p.patient_name,p.id_card,p.birthday,p.sex,p.weight,p.mobile,o.create_time  from fs_inquiry_order o inner join fs_patient p  on o.patient_id=p.patient_id     " +
+            "select DISTINCT p.patient_id,p.user_id, p.patient_name,p.id_card,p.birthday,p.sex,p.weight,p.mobile,o.create_time  from fs_inquiry_order o inner join fs_patient p  on o.patient_id=p.patient_id     " +
             "where  p.status=1 and  o.doctor_id=#{maps.doctorId}  " +
             "<if test = 'maps.patientName != null     '> " +
             "and p.patient_name like CONCAT('%',#{maps.patientName},'%')" +

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

@@ -88,4 +88,6 @@ public interface IFsUserInformationCollectionService extends IService<FsUserInfo
 
     //自动退款
     void autoRefund(FsUserInformationCollection collection);
+
+    FsUserInformationCollectionVO getCollectionByUserId(Long userId);
 }

+ 10 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserInformationCollectionServiceImpl.java

@@ -743,6 +743,16 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
 
     }
 
+    @Override
+    public FsUserInformationCollectionVO getCollectionByUserId(Long userId) {
+        FsUserInformationCollectionVO vo = new FsUserInformationCollectionVO();
+        FsUserInformationCollection collection = fsUserInformationCollectionMapper.selectFsUserInformationCollectionByUserId(userId);
+        if (collection != null) {
+            vo.setAnswers(JSON.parseArray(collection.getJsonInfo(), AnswerVO.class));
+        }
+        return vo;
+    }
+
     private List<AnswerVO> getAnswerVOs(List<AnswerVO> target,List<AnswerVO> source) {
         target.addAll(source);
         return target.stream()

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

@@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="isAudit"    column="is_audit"    />
         <result property="isNeedRegisterMember"    column="is_need_register_member"    />
         <result property="isAllowedAllRegister"    column="is_allowed_all_register"    />
+        <result property="isAllowedEveryoneView"    column="is_allowed_everyone_view"    />
         <result property="doctorId"    column="doctor_id"    />
         <association property="dept"    column="dept_id" javaType="CompanyDept" resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"        resultMap="RoleResult" />

+ 116 - 0
fs-service/src/main/resources/mapper/course/FsUserCompanyUserQwMapper.xml

@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.course.mapper.FsUserCompanyUserQwMapper">
+    
+    <resultMap type="FsUserCompanyUserQw" id="FsUserCompanyUserQwResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="companyUserId"    column="company_user_id"    />
+        <result property="companyId"    column="company_id"    />
+        <result property="isRepeatFans"    column="is_repeat_fans"    />
+        <result property="projectId"    column="project_id"    />
+        <result property="qwUserId"    column="qw_user_id"    />
+        <result property="qwExternalContactId"    column="qw_external_contact_id"    />
+        <result property="qwCompanyId"    column="qw_company_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="status"    column="status"    />
+        <result property="remark"    column="remark"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectFsUserCompanyUserQwVo">
+        select id, user_id, company_user_id, company_id, is_repeat_fans, project_id, qw_user_id, qw_external_contact_id, qw_company_id, create_by, update_by, create_time, status, remark, update_time from fs_user_company_user_qw
+    </sql>
+
+    <select id="selectFsUserCompanyUserQwList" parameterType="FsUserCompanyUserQw" resultMap="FsUserCompanyUserQwResult">
+        <include refid="selectFsUserCompanyUserQwVo"/>
+        <where>  
+            <if test="userId != null "> and user_id = #{userId}</if>
+            <if test="companyUserId != null "> and company_user_id = #{companyUserId}</if>
+            <if test="companyId != null "> and company_id = #{companyId}</if>
+            <if test="isRepeatFans != null "> and is_repeat_fans = #{isRepeatFans}</if>
+            <if test="projectId != null "> and project_id = #{projectId}</if>
+            <if test="qwUserId != null "> and qw_user_id = #{qwUserId}</if>
+            <if test="qwExternalContactId != null "> and qw_external_contact_id = #{qwExternalContactId}</if>
+            <if test="qwCompanyId != null "> and qw_company_id = #{qwCompanyId}</if>
+            <if test="status != null "> and status = #{status}</if>
+        </where>
+    </select>
+    
+    <select id="selectFsUserCompanyUserQwById" parameterType="Long" resultMap="FsUserCompanyUserQwResult">
+        <include refid="selectFsUserCompanyUserQwVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertFsUserCompanyUserQw" parameterType="FsUserCompanyUserQw" useGeneratedKeys="true" keyProperty="id">
+        insert into fs_user_company_user_qw
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">user_id,</if>
+            <if test="companyUserId != null">company_user_id,</if>
+            <if test="companyId != null">company_id,</if>
+            <if test="isRepeatFans != null">is_repeat_fans,</if>
+            <if test="projectId != null">project_id,</if>
+            <if test="qwUserId != null">qw_user_id,</if>
+            <if test="qwExternalContactId != null">qw_external_contact_id,</if>
+            <if test="qwCompanyId != null">qw_company_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="status != null">status,</if>
+            <if test="remark != null">remark,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">#{userId},</if>
+            <if test="companyUserId != null">#{companyUserId},</if>
+            <if test="companyId != null">#{companyId},</if>
+            <if test="isRepeatFans != null">#{isRepeatFans},</if>
+            <if test="projectId != null">#{projectId},</if>
+            <if test="qwUserId != null">#{qwUserId},</if>
+            <if test="qwExternalContactId != null">#{qwExternalContactId},</if>
+            <if test="qwCompanyId != null">#{qwCompanyId},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="status != null">#{status},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFsUserCompanyUserQw" parameterType="FsUserCompanyUserQw">
+        update fs_user_company_user_qw
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
+            <if test="companyId != null">company_id = #{companyId},</if>
+            <if test="isRepeatFans != null">is_repeat_fans = #{isRepeatFans},</if>
+            <if test="projectId != null">project_id = #{projectId},</if>
+            <if test="qwUserId != null">qw_user_id = #{qwUserId},</if>
+            <if test="qwExternalContactId != null">qw_external_contact_id = #{qwExternalContactId},</if>
+            <if test="qwCompanyId != null">qw_company_id = #{qwCompanyId},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsUserCompanyUserQwById" parameterType="Long">
+        delete from fs_user_company_user_qw where id = #{id}
+    </delete>
+
+    <delete id="deleteFsUserCompanyUserQwByIds" parameterType="String">
+        delete from fs_user_company_user_qw where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 4 - 5
fs-service/src/main/resources/mapper/his/FsStoreOrderMapper.xml

@@ -2058,17 +2058,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         FROM fs_store_order
         WHERE is_del = 0 AND status > 1
-        <if test="startTime != null">
+        <if test="startTime != null and startTime !=''">
             AND create_time &gt;= #{startTime}
         </if>
-        <if test="endTime != null">
+        <if test="endTime != null and endTime != ''">
             AND create_time &lt;= #{endTime}
         </if>
-
-        <if test="companyId != null">
+        <if test="companyId != null and companyId !=''">
             AND company_id = #{companyId}
         </if>
-        <if test="companyUserId != null">
+        <if test="companyUserId != null and companyUserId !=''">
             AND company_user_id = #{companyUserId}
         </if>
     </select>

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

@@ -987,16 +987,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SUM(CASE WHEN pay_type IN ('2', '3') THEN COALESCE(pay_money, 0) ELSE 0 END) AS codAmount
         FROM fs_store_order_scrm
         WHERE is_del = 0 AND status > 0
-        <if test="startTime != null">
+        <if test="startTime != null and startTime !=''">
             AND create_time &gt;= #{startTime}
         </if>
-        <if test="endTime != null">
+        <if test="endTime != null and endTime != ''">
             AND create_time &lt;= #{endTime}
         </if>
-        <if test="companyId != null">
+        <if test="companyId != null and companyId !=''">
             AND company_id = #{companyId}
         </if>
-        <if test="companyUserId != null">
+        <if test="companyUserId != null and companyUserId !=''">
             AND company_user_id = #{companyUserId}
         </if>
     </select>