瀏覽代碼

Merge remote-tracking branch 'origin/master'

Guos 5 天之前
父節點
當前提交
0000636626
共有 17 個文件被更改,包括 249 次插入40 次删除
  1. 1 9
      fs-admin/src/main/java/com/fs/company/controller/CompanyDeductController.java
  2. 1 10
      fs-admin/src/main/java/com/fs/company/controller/CompanyRechargeController.java
  3. 7 0
      fs-company/src/main/java/com/fs/company/controller/qw/QwSopTempController.java
  4. 2 0
      fs-qw-api-msg/src/main/java/com/fs/app/controller/QwMsgController.java
  5. 22 0
      fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java
  6. 3 0
      fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java
  7. 13 2
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseFinishTempParentServiceImpl.java
  8. 1 1
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseRedPacketLogServiceImpl.java
  9. 123 7
      fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java
  10. 1 0
      fs-service/src/main/java/com/fs/live/vo/LiveDataListVo.java
  11. 1 0
      fs-service/src/main/java/com/fs/live/vo/LiveDataStatisticsVo.java
  12. 1 1
      fs-service/src/main/java/com/fs/qw/mapper/QwFriendWelcomeMapper.java
  13. 3 0
      fs-service/src/main/java/com/fs/qw/service/impl/QwUserVoiceLogServiceImpl.java
  14. 11 3
      fs-service/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java
  15. 14 7
      fs-service/src/main/resources/mapper/fastGpt/FastGptRoleMapper.xml
  16. 24 0
      fs-user-app/src/main/java/com/fs/app/controller/CommonController.java
  17. 21 0
      fs-user-app/src/main/java/com/fs/app/param/TestMoneyParam.java

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

@@ -133,15 +133,7 @@ public class CompanyDeductController extends BaseController
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if(deduct.getIsAudit()==1){
             Company company=companyService.selectCompanyByIdForUpdate(deduct.getCompanyId());
-
-            // 同步redis缓存
-            R r = companyRechargeService.syncUpdateRedisCompanyRecharge(company, deduct.getMoney(), 2);
-            if(!"200".equals(r.get("code").toString())){
-                return r;
-            }
-            // 充值后,需要同步更新余额到数据库,否则余额与缓存中的不一致
-            String newMoney = r.get("newMoney").toString();
-            company.setMoney(new BigDecimal(newMoney));
+            company.setMoney(company.getMoney().subtract(deduct.getMoney()));
             companyService.updateCompany(company);
             CompanyMoneyLogs log=new CompanyMoneyLogs();
             log.setCompanyId(deduct.getCompanyId());

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

@@ -122,16 +122,7 @@ public class CompanyRechargeController extends BaseController
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if(companyRecharge.getIsAudit()==1){
             Company company=companyService.selectCompanyById(companyRecharge.getCompanyId());
-
-            // 同步redis缓存
-            // 注意:在进行充值审核之前,需要先执行一下定时任务同步缓存数据到数据库,再进行后续操作,否则金额不正确
-            R r = companyRechargeService.syncUpdateRedisCompanyRecharge(company, companyRecharge.getMoney(), 1);
-            if(!"200".equals(r.get("code").toString())){
-                return r;
-            }
-            // 充值后,需要同步更新余额到数据库,否则余额与缓存中的不一致
-            String newMoney = r.get("newMoney").toString();
-            company.setMoney(new BigDecimal(newMoney));
+            company.setMoney(company.getMoney().add(companyRecharge.getMoney()));
             companyService.updateCompany(company);
             CompanyMoneyLogs log=new CompanyMoneyLogs();
             log.setCompanyId(companyRecharge.getCompanyId());

+ 7 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwSopTempController.java

@@ -24,6 +24,7 @@ import com.fs.sop.service.IQwSopTempService;
 import com.fs.sop.vo.UpdateRedVo;
 import com.fs.voice.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -50,6 +51,8 @@ public class QwSopTempController extends BaseController
     @Autowired
     private IQwUserService iQwUserService;
 
+    @Value("${cloud_host.company_name}")
+    private String signProjectName;
 
     @Autowired
     private CompanyDeptServiceImpl companyDeptService;
@@ -141,6 +144,10 @@ public class QwSopTempController extends BaseController
     public TableDataInfo deptList(QwSopTemp qwSopTemp)
     {
 
+        if ("济南联志健康".equals(signProjectName)) {
+            return list(qwSopTemp);
+        }
+
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         qwSopTemp.setCompanyId(loginUser.getCompany().getCompanyId());
 

+ 2 - 0
fs-qw-api-msg/src/main/java/com/fs/app/controller/QwMsgController.java

@@ -429,6 +429,8 @@ public class QwMsgController {
                         }
                     } else if (recordType==2){
                         log.info("id:{}, 通话挂断", id);
+                    }else if (recordType==3){
+                        log.info("通话未接听");
                     }else {
                         break;
                     }

+ 22 - 0
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -179,6 +179,10 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
     @Autowired
     private IFsUserCompanyBindService fsUserCompanyBindService;
 
+
+    @Autowired
+    private IQwSopTempVoiceService sopTempVoiceService;
+
     @PostConstruct
     public void init() {
         loadCourseConfig();
@@ -2019,6 +2023,24 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         //完课后若是小程序发送另外一堂课
         saveWacthLogOfCourseLink(settings,sopLogs,newTimeString,finishLog,finishTemp);
         // 处理音频内容
+        for (QwSopCourseFinishTempSetting.Setting st : settings) {
+            if (st.getContentType().equals("7")) {
+                Long companyUserId = finishLog.getCompanyUserId();
+                QwSopTempVoice qwSopTempVoice = sopTempVoiceService.selectQwSopTempVoiceByCompanyUserIdAndVoiceTxt(companyUserId, st.getValue());
+                if (qwSopTempVoice != null && qwSopTempVoice.getVoiceUrl() != null && qwSopTempVoice.getRecordType() == 1) {
+                    st.setVoiceUrl(qwSopTempVoice.getVoiceUrl());
+                    st.setVoiceDuration(String.valueOf(qwSopTempVoice.getDuration()));
+                } else if (qwSopTempVoice == null) {
+                    if(companyUserId != null && st.getValue() != null){
+                        qwSopTempVoice = new QwSopTempVoice();
+                        qwSopTempVoice.setCompanyUserId(companyUserId);
+                        qwSopTempVoice.setVoiceTxt(st.getValue());
+                        qwSopTempVoice.setRecordType(0);
+                        sopTempVoiceService.insertQwSopTempVoice(qwSopTempVoice);
+                    }
+                }
+            }
+        }
 //        for (QwSopCourseFinishTempSetting.Setting st : settings) {
 //            if (st.getContentType().equals("7")) {
 //                try {

+ 3 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -234,6 +234,9 @@ public class CompanyUserServiceImpl implements ICompanyUserService
 
                 Integer count=companyUserService.selectCompanyUserCountByCompanyId(copy.getCompanyId());
                 Company company=companyService.selectCompanyById(copy.getCompanyId());
+                if (company== null) {
+                    throw new CustomException("未查询到相应的销售公司!");
+                }
 
                 if(count>company.getLimitUserCount()){
                     throw new CustomException("销售公司的销售数量已达到上限!");

+ 13 - 2
fs-service/src/main/java/com/fs/course/service/impl/FsCourseFinishTempParentServiceImpl.java

@@ -4,8 +4,11 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.utils.StringUtils;
 import com.fs.course.domain.FsCourseFinishTemp;
 import com.fs.course.domain.FsUserCourse;
 import com.fs.course.domain.FsUserCourseVideo;
@@ -13,7 +16,10 @@ import com.fs.course.service.IFsCourseFinishTempService;
 import com.fs.course.service.IFsUserCourseService;
 import com.fs.course.service.IFsUserCourseVideoService;
 import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.fs.course.mapper.FsCourseFinishTempParentMapper;
 import com.fs.course.domain.FsCourseFinishTempParent;
@@ -26,9 +32,13 @@ import com.fs.course.service.IFsCourseFinishTempParentService;
  * @date 2025-05-22
  */
 @Service
-@AllArgsConstructor
+@RequiredArgsConstructor
 public class FsCourseFinishTempParentServiceImpl extends ServiceImpl<FsCourseFinishTempParentMapper, FsCourseFinishTempParent> implements IFsCourseFinishTempParentService {
 
+
+    @Value("${cloud_host.company_name}")
+    private String signProjectName;
+
     private final IFsUserCourseService fsUserCourseService;
     private final IFsUserCourseVideoService fsUserCourseVideoService;
     private final IFsCourseFinishTempService fsCourseFinishTempService;
@@ -71,10 +81,11 @@ public class FsCourseFinishTempParentServiceImpl extends ServiceImpl<FsCourseFin
         List<FsUserCourseVideo> videoList = fsUserCourseVideoService.selectFsUserCourseVideoListByCourseId(fsUserCourseVideo);
         int insert = baseMapper.insert(fsCourseFinishTempParent);
         fsCourseFinishTempParent.setCreateTime(DateUtils.getNowDate());
+        Long currentStatus = "济南联志健康".equals(signProjectName) ? fsCourseFinishTempParent.getStatus() : 0L;
         videoList.forEach(e -> {
             FsCourseFinishTemp temp = new FsCourseFinishTemp();
             temp.setName(e.getFileName());
-            temp.setStatus(0L);
+            temp.setStatus(currentStatus);
             temp.setSetting(fsCourseFinishTempParent.getSetting());
             temp.setChatSetting(fsCourseFinishTempParent.getChatSetting());
             temp.setCompanyId(fsCourseFinishTempParent.getCompanyId());

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

@@ -361,7 +361,7 @@ public class FsCourseRedPacketLogServiceImpl implements IFsCourseRedPacketLogSer
                         fsCourseRedPacketLog.setLogId(redPacket.getLogId());
                         fsCourseRedPacketLog.setStatus(1); // 已发送
                         fsCourseRedPacketLog.setUpdateTime(new Date());
-//                        updateFsCourseRedPacketLog(fsCourseRedPacketLog);
+                        updateFsCourseRedPacketLog(fsCourseRedPacketLog);
                     }
                 } catch (WxPayException e) {
                     logger.error(e.getMessage());

+ 123 - 7
fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java

@@ -21,6 +21,8 @@ import com.fs.erp.dto.df.*;
 import com.fs.erp.dto.sdk.df.DfClient;
 import com.fs.erp.dto.sdk.df.enums.RequestUrlEnum;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.fastGpt.domain.FastGptRole;
+import com.fs.fastGpt.service.IFastGptRoleService;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.*;
 import com.fs.his.enums.FsStoreOrderLogEnum;
@@ -45,9 +47,18 @@ import com.fs.hisStore.param.FsStoreAfterSalesParam;
 import com.fs.hisStore.service.IFsExpressScrmService;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.hisStore.vo.FsStoreOrderItemVO;
+import com.fs.qw.domain.QwExternalContact;
+import com.fs.qw.domain.QwUser;
+import com.fs.qw.mapper.QwUserMapper;
+import com.fs.qw.service.IQwExternalContactService;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.fs.utils.OrderContextHolder;
+import com.fs.wxwork.dto.WxWorkResponseDTO;
+import com.fs.wxwork.dto.WxWorkSendTextMsgDTO;
+import com.fs.wxwork.dto.WxWorkUserId2VidDTO;
+import com.fs.wxwork.dto.WxWorkVid2UserIdRespDTO;
+import com.fs.wxwork.service.WxWorkService;
 import com.hc.openapi.tool.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.util.Asserts;
@@ -128,6 +139,14 @@ public class DfOrderServiceImpl implements IErpOrderService {
 
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private IQwExternalContactService externalContactService;
+    @Autowired
+    private QwUserMapper qwUserMapper;
+    @Autowired
+    private IFastGptRoleService fastGptRoleService;
+    @Autowired
+    private WxWorkService wxWorkService;
 
 
     @Override
@@ -401,7 +420,8 @@ public class DfOrderServiceImpl implements IErpOrderService {
     @Override
     public void getOrderDeliveryStatus(FsStoreOrder order) {
         Map<String, Object> map = new HashMap<>();
-        Long dfAccountId = getSFAccountIndex(order.getOrderId());
+        Long orderId = order.getOrderId();
+        Long dfAccountId = getSFAccountIndex(orderId);
         map.put("orderNumber", order.getOrderCode());
         map.put("mailNumber", order.getDeliverySn());
         try {
@@ -423,7 +443,7 @@ public class DfOrderServiceImpl implements IErpOrderService {
                 Integer deliveryStatus = 0;
                 String stateEx = "0";
                 FsStoreOrder fsStoreOrderMap = new FsStoreOrder();
-                fsStoreOrderMap.setOrderId(order.getOrderId());
+                fsStoreOrderMap.setOrderId(orderId);
                 Integer status = temp.getStatus();
                 switch (status) {
                     case 0:
@@ -469,7 +489,7 @@ public class DfOrderServiceImpl implements IErpOrderService {
                         Map<String, Object> config = (Map<String, Object>) JSON.parse(sysConfig.getConfigValue());
                         Object isUpdateOrder = config.get("isUpdateOrder");
                         if (isUpdateOrder == null || "1".equals(isUpdateOrder.toString())) {
-                            fsStoreOrderService.getGoods(order.getOrderId(), "物流自动");
+                            fsStoreOrderService.getGoods(orderId, "物流自动");
                         }
                         break;
                     case 10:
@@ -484,6 +504,16 @@ public class DfOrderServiceImpl implements IErpOrderService {
                         }
                         break;
                 }
+
+
+                //判断物流状态是否更新 更新ai发送物流给客户
+                try {
+                    aiSendExpress(order, stateEx);
+                } catch (Exception e) {
+                    log.error("ai发送物流信息错误:{}", e.getMessage());
+                }
+
+
                 fsStoreOrderMap.setDeliveryStatus(deliveryStatus); //物流状态:0-暂无轨迹信息 1-已揽收 2-在途中,3-签收,4-问题件
                 fsStoreOrderMap.setDeliveryType(stateEx);
                 fsStoreOrderMapper.updateFsStoreOrder(fsStoreOrderMap);
@@ -493,6 +523,91 @@ public class DfOrderServiceImpl implements IErpOrderService {
         }
     }
 
+    private void aiSendExpress(FsStoreOrder order, String stateEx) {
+        Long orderId = order.getOrderId();
+        if (!Objects.equals(order.getDeliveryType(), stateEx)) {
+            //判断是否添加相关企微员工
+            if(order.getUserId() != null){
+                List<QwExternalContact> qwExternalContact = externalContactService.selectQwExternalContactByFsUserIdAndCompany(order.getUserId(), order.getCompanyUserId());
+                if(qwExternalContact != null && !qwExternalContact.isEmpty()) {
+                    for (QwExternalContact externalContact : qwExternalContact) {
+                        Long qwUserId = externalContact.getQwUserId();
+                        if (qwUserId != null) {
+                            QwUser qwUser = qwUserMapper.selectQwUserById(qwUserId);
+                            if (qwUser != null && qwUser.getUid() != null && qwUser.getFastGptRoleId() != null && qwUser.getServerId() != null && qwUser.getServerStatus() == 1 && qwUser.getIpadStatus() == 1) {
+                                FastGptRole fastGptRole = fastGptRoleService.selectFastGptRoleByRoleId(qwUser.getFastGptRoleId());
+                                if (fastGptRole.getLogistics() == 0) {
+                                    log.error("物流功能未开启,roleId:" + qwUser.getFastGptRoleId() + "订单号:" + orderId);
+                                }
+                                WxWorkUserId2VidDTO wxWorkUserId2VidDTO = new WxWorkUserId2VidDTO();
+                                wxWorkUserId2VidDTO.setOpenid(Collections.singletonList(externalContact.getExternalUserId()));
+                                wxWorkUserId2VidDTO.setUuid(qwUser.getUid());
+                                WxWorkResponseDTO<List<WxWorkVid2UserIdRespDTO>> WxWorkVid2UserIdRespDTO = wxWorkService.UserId2Vid(wxWorkUserId2VidDTO, qwUser.getServerId());
+                                List<WxWorkVid2UserIdRespDTO> data = WxWorkVid2UserIdRespDTO.getData();
+                                StringBuilder sBuilder = new StringBuilder();
+                                if (data != null && !data.isEmpty()) {
+                                    Long sendId = data.get(0).getUser_id();
+                                    switch (order.getStatus()) {
+                                        case -1:
+                                            break;
+                                        case -2:
+                                            break;
+                                        case 1:
+                                            break;
+                                        case 2:
+                                            sBuilder.append("您好,您有一个包裹正在准备发货,请耐心等待;\n");
+                                            if (order.getDeliverySn() != null && !order.getDeliverySn().isEmpty()) {
+                                                sBuilder.append(" 物流单号为:").append(order.getDeliverySn()).append("\n");
+                                            }
+                                            sBuilder.append("\uD83C\uDF39\uD83C\uDF39\uD83C\uDF39");
+                                            break;
+                                        case 3:
+                                            if ("202".equals(stateEx)) {
+                                                //211
+                                                //你好,这边查询到您购买的XXX(购买套餐)在XXX(时间)已经送到了,送货员电话为XXX(送货员信息)
+                                                ErpDeliverysRequest erpDeliverysRequest = new ErpDeliverysRequest();
+                                                erpDeliverysRequest.setCode(order.getOrderCode());
+                                                ErpDeliverysResponse express = null;
+                                                express = getDeliver(erpDeliverysRequest);
+                                                sBuilder.append("这边查询到您有一个包裹 ");
+                                                if (express != null && express.getDeliverys() != null && !express.getDeliverys().isEmpty()) {
+                                                    List<ErpDeliverys> deliverys = express.getDeliverys();
+                                                    ErpDeliverys tracesDTO = deliverys.get(deliverys.size() - 1);
+                                                    String remark = tracesDTO.getRemark();
+                                                    if ("派送至".equals(remark)) {
+                                                        sBuilder.append(" 在").append(tracesDTO.getAcceptTime()).append("已经送到了\n");
+                                                        sBuilder.append(" 物流单号为:").append(order.getDeliverySn()).append("\n");
+                                                        sBuilder.append("物流信息:").append(remark).append("\n");
+                                                    }
+                                                } else {
+                                                    sBuilder.append(" 已经送到了\n");
+                                                }
+                                                sBuilder.append("\uD83C\uDF39\uD83C\uDF39\uD83C\uDF39");
+                                            }
+                                            break;
+                                        case 4:
+                                        case 5:
+                                    }
+                                    if (!"".contentEquals(sBuilder)) {
+                                        //2.发送模板中的文字内容
+                                        String content = sBuilder.toString();
+                                        content = content.replace("(有事呼叫我,勿找平台,少一次投诉,多一份感恩)", "");
+                                        WxWorkSendTextMsgDTO wxWorkSendTextMsgDTO = new WxWorkSendTextMsgDTO();
+                                        wxWorkSendTextMsgDTO.setSend_userid(sendId);
+                                        wxWorkSendTextMsgDTO.setUuid(qwUser.getUid());
+                                        wxWorkSendTextMsgDTO.setContent(content);
+                                        wxWorkSendTextMsgDTO.setIsRoom(false);
+                                        wxWorkService.SendTextMsg(wxWorkSendTextMsgDTO, qwUser.getServerId());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     @Override
     public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
         Map<String, Object> map = new HashMap<>();
@@ -589,6 +704,7 @@ public class DfOrderServiceImpl implements IErpOrderService {
     }
 
     private void cancelOrder(FsStoreOrder order) {
+        Long orderId = order.getOrderId();
         Integer deliveryStatus = order.getDeliveryStatus();
         if (deliveryStatus == null || deliveryStatus == 0) {
             //没有物流信息
@@ -597,21 +713,21 @@ public class DfOrderServiceImpl implements IErpOrderService {
             order.setExtendOrderId("");
             order.setDeliverySn("");
             fsStoreOrderMapper.updateFsStoreOrder(order);
-            fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.UPDATE_ORDER_DF.getValue(),
+            fsStoreOrderLogsService.create(orderId, FsStoreOrderLogEnum.UPDATE_ORDER_DF.getValue(),
                     "运单不存在," + FsStoreOrderLogEnum.UPDATE_ORDER_DF.getDesc());
         } else {
             //有物流信息->售后处理
             //取消订单
             FsStoreOrderSalesParam afterSalesParam = new FsStoreOrderSalesParam();
-            afterSalesParam.setOrderId(order.getOrderId());
+            afterSalesParam.setOrderId(orderId);
             afterSalesParam.setReasons("代服管家取消订单");
             afterSalesParam.setOperator("代服管家");
             fsStoreOrderService.afterSales(afterSalesParam);
-            fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.REFUND_ORDER_DF.getValue(),
+            fsStoreOrderLogsService.create(orderId, FsStoreOrderLogEnum.REFUND_ORDER_DF.getValue(),
                     "运单不存在," + FsStoreOrderLogEnum.REFUND_ORDER_DF.getDesc());
         }
         FsStoreOrderDf df = new FsStoreOrderDf();
-        df.setOrderId(order.getOrderId());
+        df.setOrderId(orderId);
         df.setStatus(2);
         df.setUpdateTime(new Date());
         fsStoreOrderDfMapper.updateFsStoreOrderDf(df);

+ 1 - 0
fs-service/src/main/java/com/fs/live/vo/LiveDataListVo.java

@@ -72,3 +72,4 @@ public class LiveDataListVo {
 }
 
 
+

+ 1 - 0
fs-service/src/main/java/com/fs/live/vo/LiveDataStatisticsVo.java

@@ -53,3 +53,4 @@ public class LiveDataStatisticsVo {
 }
 
 
+

+ 1 - 1
fs-service/src/main/java/com/fs/qw/mapper/QwFriendWelcomeMapper.java

@@ -85,7 +85,7 @@ public interface QwFriendWelcomeMapper
             "           SELECT 1 FROM qw_user qu " +
             "           JOIN company_user cu ON cu.user_id = qu.company_user_id " +
             "           WHERE FIND_IN_SET(qu.id, REPLACE(REPLACE(REPLACE(qfw.qw_user_ids, '[', ''), ']', ''), ' ', '')) > 0 " +
-            "           AND qu.id = #{qwUserIds} " +
+            "           AND qu.qw_user_id = #{qwUserIds} " +
             "       ) AND " +
             "   </if>" +
             "   <if test=\"isSendMsg != null\"> qfw.is_send_msg = #{isSendMsg} AND </if>" +

+ 3 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwUserVoiceLogServiceImpl.java

@@ -217,6 +217,9 @@ public class QwUserVoiceLogServiceImpl extends ServiceImpl<QwUserVoiceLogMapper,
                 if (recordType == 2) {//2是未接通的处理
                     qwUserVoiceLog.setStatus(recordType);
                     qwUserVoiceLog.setTitle("通话拒接");
+                }else if(recordType == 3){
+                    qwUserVoiceLog.setStatus(recordType);
+                    qwUserVoiceLog.setTitle("通话未接听");
                 } else {
                     qwUserVoiceLog.setStatus(1);
                     if (totalSeconds != null) {

+ 11 - 3
fs-service/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java

@@ -993,10 +993,19 @@ public class QwSopLogsServiceImpl extends ServiceImpl<QwSopLogsMapper, QwSopLogs
     public SendSopParamDetailsC getQwSopLogsByJsApi(GetQwSopLogsByJsApiParam param) {
         //写入企业微信 在线状态 10分钟 通过订阅方式,如果10分钟没有请求此接口,调用一个LOGIN方法
 //        redisCache.setCacheObject("qwActive:"+param.getCorpId()+":"+param.getQwUserId(),1,30 ,TimeUnit.MINUTES);
-        logger.info("主动获取发送信息:"+param);
 
         // 封装消息体
         SendSopParamDetailsC sopParamDetailsC = new SendSopParamDetailsC();
+        // 查询员工信息的id
+        QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(),param.getQwUserId().trim());
+        // 如果发送方式不等于侧边栏跳过
+        if(qwUser.getSendMsgType() != 0){
+            return sopParamDetailsC;
+        }
+
+        logger.info("主动获取发送信息:"+param);
+
+
 //        sendDelayTime(sopParamDetailsC,param);
         // 使用线程安全的集合
         List<QwSopLogsDoSendListTVO> sendJsApiList = Collections.synchronizedList(new ArrayList<>());
@@ -1044,8 +1053,7 @@ public class QwSopLogsServiceImpl extends ServiceImpl<QwSopLogsMapper, QwSopLogs
                             }
                     ));
 
-            // 查询员工信息的id
-            QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(),param.getQwUserId().trim());
+
 
             Long qwId=qwUser.getId();
 

+ 14 - 7
fs-service/src/main/resources/mapper/fastGpt/FastGptRoleMapper.xml

@@ -21,10 +21,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="bindCorpId"    column="bind_corp_id"    />
         <result property="contactInfo"    column="contact_info"    />
         <result property="channelType"    column="channel_type"    />
+        <result property="logistics"    column="logistics"    />
     </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 from fastgpt_role
+        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 from fastgpt_role
     </sql>
 
     <select id="selectFastGptRoleList" parameterType="FastGptRole" resultMap="FastGptRoleResult">
@@ -59,20 +60,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
         </where>
     </select>
-
+    <select id="selectFastGptRoleRoleIdsByLikeAppKey" resultType="com.fs.his.vo.OptionsVO">
+        select
+            role_name as dictLabel,
+            mode_config_json as dictImgUrl,
+            role_id as dictValue
+        from fastgpt_role
+        where mode_config_json like concat('{"APPKey":"', #{appKey}, '%')
+    </select>
     <select id="selectFastGptRoleRoleIdsByAppKey" resultType="java.lang.String">
         select
             role_id as roleId
         from fastgpt_role
         where mode_config_json like concat('{"APPKey":"', #{appKey}, '%')
     </select>
-
     <select id="selectFastGptRoleAppKeyList" resultType="com.fs.fastGpt.vo.FastgptEventLogTotalVo">
         select
             role_id as roleId,role_name as roleName,mode_config_json as appKey
         from fastgpt_role
     </select>
 
+
     <insert id="insertFastGptRole" parameterType="FastGptRole" useGeneratedKeys="true" keyProperty="roleId">
         insert into fastgpt_role
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -90,8 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="reminderWords != null">reminder_words,</if>
             <if test="bindCorpId != null">bind_corp_id,</if>
             <if test="contactInfo != null">contact_info,</if>
-            <if test="channelType != null">channel_type,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="roleName != null">#{roleName},</if>
             <if test="companyId != null">#{companyId},</if>
@@ -107,8 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="reminderWords != null">#{reminderWords},</if>
             <if test="bindCorpId != null">#{bindCorpId},</if>
             <if test="contactInfo != null">#{contactInfo},</if>
-            <if test="channelType != null">#{channelType},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateFastGptRole" parameterType="FastGptRole">
@@ -129,6 +135,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bindCorpId != null">bind_corp_id = #{bindCorpId},</if>
             <if test="contactInfo != null">contact_info = #{contactInfo},</if>
             <if test="channelType != null">channel_type = #{channelType},</if>
+            <if test="logistics != null">logistics = #{logistics},</if>
         </trim>
         where role_id = #{roleId}
     </update>

+ 24 - 0
fs-user-app/src/main/java/com/fs/app/controller/CommonController.java

@@ -9,6 +9,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fs.ai.service.IBaiduAIService;
 import com.fs.ai.vo.BaiduAIMsgResultVO;
 import com.fs.app.param.SignParam;
+import com.fs.app.param.TestMoneyParam;
 import com.fs.app.utils.CityTreeUtil;
 import com.fs.app.utils.JwtUtils;
 import com.fs.app.vo.CityVO;
@@ -28,6 +29,8 @@ import com.fs.common.exception.file.OssException;
 import com.fs.common.utils.file.FileUploadUtils;
 import com.fs.common.utils.http.HttpUtils;
 import com.fs.common.utils.sign.Md5Utils;
+import com.fs.company.domain.CompanyMoneyLogs;
+import com.fs.company.service.ICompanyMoneyLogsService;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.service.IHuaweiVodService;
@@ -73,6 +76,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
+import java.math.BigDecimal;
 import java.util.*;
 
 import static com.fs.common.utils.SecurityUtils.getUserId;
@@ -142,6 +146,26 @@ public class CommonController {
 //		return R.ok();
 //	}
 
+	@Autowired
+	ICompanyMoneyLogsService logsService;
+	@ApiOperation("同步企业金额")
+	@PostMapping("testUpdateCompanyMoney")
+	public R testUpdateCompanyMoney(@RequestBody TestMoneyParam param) throws Exception
+	{
+		List<CompanyMoneyLogs> logs=logsService.selectCompanyMoneyLogsByCompanyId(param.getCompanyId(),param.getLogsId().toString());
+		if(logs!=null){
+			BigDecimal companyMoney=param.getMoney();
+			for(CompanyMoneyLogs log:logs){
+				companyMoney=companyMoney.add(log.getMoney());
+				CompanyMoneyLogs logMap=new CompanyMoneyLogs();
+				logMap.setLogsId(log.getLogsId());
+				logMap.setBalance(companyMoney);
+				logsService.updateCompanyMoneyLogs(logMap);
+			}
+		}
+		return R.ok();
+	}
+
 
 	@ApiOperation("excel")
 	@GetMapping(value = "/exportExcel")

+ 21 - 0
fs-user-app/src/main/java/com/fs/app/param/TestMoneyParam.java

@@ -0,0 +1,21 @@
+package com.fs.app.param;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+@ToString
+public class TestMoneyParam implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Long companyId;
+    private Long logsId;
+    private BigDecimal money;
+
+
+}