Kaynağa Gözat

新增公司可编辑自己公司的主备小程序

lmx 1 hafta önce
ebeveyn
işleme
a0dec7571b

+ 40 - 0
fs-company/src/main/java/com/fs/company/controller/company/CompanyConfigController.java

@@ -4,7 +4,9 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.CompanyConfig;
+import com.fs.company.param.SaveCompanyMiniAppParam;
 import com.fs.company.service.ICompanyConfigService;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
@@ -78,7 +80,45 @@ public class CompanyConfigController extends BaseController
 
     }
 
+    /**
+     * 获取公司可配置小程序列表
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('company:miniConfig:list')")
+    @GetMapping(value = "/getCompanyMiniAppList")
+    public R getCompanyMiniAppList()
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if(null == loginUser) {
+            return R.error("用户信息错误");
+        }
+        Long companyId = loginUser.getCompany().getCompanyId();
+        return R.ok().put("data",companyConfigService.getCompanyMiniAppList(companyId));
+
+    }
 
+    /**
+     * 公司编辑保存主备小程序数据
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('company:miniConfig:addOrEdit')")
+    @PostMapping(value = "/saveCompanyMiniApp")
+    public R saveCompanyMiniApp(@RequestBody SaveCompanyMiniAppParam param)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if(null == loginUser) {
+            return R.error("用户信息错误");
+        }
+        Long companyId = loginUser.getCompany().getCompanyId();
+        param.setCompanyId(companyId);
+//        if(null == param.getCompanyId() || !companyId.equals(param.getCompanyId())) {
+//            return R.error("公司信息错误");
+//        }
+        Long userId = loginUser.getUser().getUserId();
+        param.setUpdateBy(userId);
+        return companyConfigService.saveCompanyMiniApp(param);
+
+    }
 
 
 

+ 12 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyConfigMapper.java

@@ -1,6 +1,7 @@
 package com.fs.company.mapper;
 
 import com.fs.company.domain.CompanyConfig;
+import com.fs.company.vo.CompanyMiniAppVO;
 import com.fs.system.domain.SysConfig;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -74,4 +75,15 @@ public interface CompanyConfigMapper
 
     @Select("select config_value from company_config where company_id=#{companyId} and config_key='redPacket:config' ")
     String selectRedPacketConfigByKey(Long companyId);
+
+    @Select("select \n" +
+            "id,\n" +
+            "name,\n" +
+            "appid\n" +
+            "from\n" +
+            "fs_course_play_source_config\n" +
+            "where \n" +
+            "is_del = 0\n" +
+            "and FIND_IN_SET(#{companyId},set_company_ids)")
+    List<CompanyMiniAppVO> getCompanyMiniAppList(@Param("companyId") Long companyId);
 }

+ 30 - 0
fs-service/src/main/java/com/fs/company/param/SaveCompanyMiniAppParam.java

@@ -0,0 +1,30 @@
+package com.fs.company.param;
+
+import lombok.Data;
+
+/**
+ * @author MixLiu
+ * @date 2025/11/22 下午1:59)
+ */
+
+@Data
+public class SaveCompanyMiniAppParam {
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 主要小程序
+     */
+    private String mainMiniAppId;
+
+    /**
+     * 备用小程序
+     */
+    private String backupMiniAppId;
+
+    private Long updateBy;
+
+}

+ 17 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyConfigService.java

@@ -1,6 +1,9 @@
 package com.fs.company.service;
 
+import com.fs.common.core.domain.R;
 import com.fs.company.domain.CompanyConfig;
+import com.fs.company.param.SaveCompanyMiniAppParam;
+import com.fs.company.vo.CompanyMiniAppVO;
 
 import java.util.List;
 
@@ -69,4 +72,18 @@ public interface ICompanyConfigService
     CompanyConfig selectCompanyConfigByServerKey(String key);
 
     String selectRedPacketConfigByKey(Long companyId);
+
+    /**
+     * 获取公司可配置小程序列表
+     * @param companyId
+     * @return
+     */
+    List<CompanyMiniAppVO> getCompanyMiniAppList(Long companyId);
+
+    /**
+     * 公司编辑保存主备小程序数据
+     * @param param
+     * @return
+     */
+    R saveCompanyMiniApp(SaveCompanyMiniAppParam param);
 }

+ 67 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyConfigServiceImpl.java

@@ -1,19 +1,26 @@
 package com.fs.company.service.impl;
 
+import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.core.text.Convert;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.CompanyConfig;
+import com.fs.company.domain.CompanyMiniapp;
 import com.fs.company.mapper.CompanyConfigMapper;
+import com.fs.company.mapper.CompanyMiniappMapper;
+import com.fs.company.param.SaveCompanyMiniAppParam;
 import com.fs.company.service.ICompanyConfigService;
+import com.fs.company.vo.CompanyMiniAppVO;
 import com.fs.system.domain.SysConfig;
 import org.apache.http.util.Asserts;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
@@ -38,6 +45,8 @@ public class CompanyConfigServiceImpl implements ICompanyConfigService
     private static final String REDIS_KEY_PREFIX = "red_packet_config:";
     private static final long CACHE_TIMEOUT = 24 * 60 * 60;
 
+    @Autowired
+    CompanyMiniappMapper companyMiniappMapper;
     /**
      * 查询参数配置
      *
@@ -171,4 +180,62 @@ public class CompanyConfigServiceImpl implements ICompanyConfigService
     private static Object getSynchronizationObject(Long companyId) {
         return LOCKS.computeIfAbsent(companyId, k -> new Object());
     }
+
+    /**
+     * 获取公司可配置小程序列表
+     * @param companyId
+     * @return
+     */
+    public  List<CompanyMiniAppVO> getCompanyMiniAppList(Long companyId){
+        return companyConfigMapper.getCompanyMiniAppList(companyId);
+    }
+
+
+    /**
+     * 公司编辑保存主备小程序数据
+     * @param param
+     * @return
+     */
+    @Override
+    @Transactional
+    public R saveCompanyMiniApp(SaveCompanyMiniAppParam param){
+        CompanyMiniapp companyMiniapp = new CompanyMiniapp();
+        companyMiniapp.setCompanyId(param.getCompanyId());
+        //主要小程序
+        Integer type_main = 0;
+        //备用小程序
+        Integer type_backup = 1;
+
+        List<CompanyMiniapp> companyMiniapps = companyMiniappMapper.selectCompanyMiniappList(companyMiniapp);
+        if(null != companyMiniapps && !companyMiniapps.isEmpty() && companyMiniapps.size() == 2){
+            for (CompanyMiniapp miniapp : companyMiniapps) {
+                //主要小程序更新
+                if(type_main.equals(miniapp.getType())){
+                    miniapp.setAppId(param.getMainMiniAppId());
+                }
+                //备用小程序更新
+                if(type_backup.equals(miniapp.getType())){
+                    miniapp.setAppId(param.getBackupMiniAppId());
+                }
+                miniapp.setUpdateTime(new Date());
+                int i = companyMiniappMapper.updateCompanyMiniapp(miniapp);
+            }
+        }else{
+            CompanyMiniapp mainMiniapp = new CompanyMiniapp();
+            mainMiniapp.setCreateTime(new Date());
+            mainMiniapp.setType(type_main);
+            mainMiniapp.setAppId(param.getMainMiniAppId());
+            mainMiniapp.setSortNum(0);
+            mainMiniapp.setCompanyId(param.getCompanyId());
+            int i = companyMiniappMapper.insertCompanyMiniapp(mainMiniapp);
+            CompanyMiniapp backupMiniapp = new CompanyMiniapp();
+            backupMiniapp.setCreateTime(new Date());
+            backupMiniapp.setType(type_backup);
+            backupMiniapp.setAppId(param.getBackupMiniAppId());
+            backupMiniapp.setSortNum(0);
+            backupMiniapp.setCompanyId(param.getCompanyId());
+            int  j = companyMiniappMapper.insertCompanyMiniapp(backupMiniapp);
+        }
+        return R.ok();
+    }
 }

+ 32 - 0
fs-service/src/main/java/com/fs/company/vo/CompanyMiniAppVO.java

@@ -0,0 +1,32 @@
+package com.fs.company.vo;
+
+import lombok.Data;
+
+/**
+ * @author MixLiu
+ * @date 2025/11/22 下午1:42)
+ */
+
+@Data
+public class CompanyMiniAppVO {
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 小程序/公众号名称
+     */
+    private String name;
+
+    /**
+     * 小程序/公众号appid
+     */
+    private String appid;
+
+    /**
+     * 小程序所属公司id
+     */
+    private Long companyId;
+
+}

+ 4 - 0
fs-service/src/main/java/com/fs/course/domain/FsCoursePlaySourceConfig.java

@@ -82,6 +82,10 @@ public class FsCoursePlaySourceConfig {
      */
     private Long companyId;
 
+    /**
+     * 销售公司ids 用于判定销售公司可见编辑列表
+     */
+    private String setCompanyIds;
     /**
      * 销售ID
      */

+ 5 - 0
fs-service/src/main/java/com/fs/course/param/FsCoursePlaySourceConfigCreateParam.java

@@ -45,6 +45,11 @@ public class FsCoursePlaySourceConfigCreateParam {
 
     @ApiModelProperty("所属公司")
     private Long companyId;
+    /**
+     * 销售公司ids 用于判定销售公司可见编辑列表
+     */
+    @ApiModelProperty("销售公司ids 用于判定销售公司可见编辑列表")
+    private String setCompanyIds;
 
     @ApiModelProperty("是否是互医/商城小程序")
     private Integer isMall;

+ 6 - 0
fs-service/src/main/java/com/fs/course/param/FsCoursePlaySourceConfigEditParam.java

@@ -43,6 +43,12 @@ public class FsCoursePlaySourceConfigEditParam {
     @ApiModelProperty("所属公司")
     private Long companyId;
 
+    /**
+     * 销售公司ids 用于判定销售公司可见编辑列表
+     */
+    @ApiModelProperty("销售公司ids 用于判定销售公司可见编辑列表")
+    private String setCompanyIds;
+
     @ApiModelProperty("是否是互医/商城小程序")
     private Integer isMall;
     private Long createDeptId;

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

@@ -620,6 +620,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         //找当前群中的用户匹配
         if(StringUtils.isNotBlank(param.getChatId()) && null == qwExternalContact){
             List<QwExternalContact> groupChatUserByChatIdAndUserName = qwExternalContactMapper.getGroupChatUserByChatIdAndUserName(qwGroupChat.getOwner(), user.getNickName(), param.getCorpId(), param.getChatId());
+            log.info("群聊用户查询结果,参数user_id:{},name:{},corp_id:{},chatId:{},groupChatUserByChatIdAndUserName:{}",qwGroupChat.getOwner(),user.getNickName(),param.getCorpId(),param.getChatId(),groupChatUserByChatIdAndUserName);
             //没找到用户 || 找到的用户数量大于1 使用userid查询匹配
             if(null == groupChatUserByChatIdAndUserName || groupChatUserByChatIdAndUserName.isEmpty() || groupChatUserByChatIdAndUserName.size() > 1){
                 log.error("群聊用户昵称匹配异常,参数user_id:{},name:{},corp_id:{},chatId:{}",qwGroupChat.getOwner(),user.getNickName(),param.getCorpId(),param.getChatId());

+ 6 - 0
fs-service/src/main/java/com/fs/course/vo/FsCoursePlaySourceConfigVO.java

@@ -42,6 +42,12 @@ public class FsCoursePlaySourceConfigVO {
     @ApiModelProperty("所属公司")
     private Long companyId;
 
+    /**
+     * 销售公司ids 用于判定销售公司可见编辑列表
+     */
+    @ApiModelProperty("销售公司ids 用于判定销售公司可见编辑列表")
+    private String setCompanyIds;
+
     @ApiModelProperty("创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;