Browse Source

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_java

caoliqin 2 weeks ago
parent
commit
4ca6b0ec8e
18 changed files with 244 additions and 85 deletions
  1. 11 0
      fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactController.java
  2. 15 7
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseProductOrderServiceImpl.java
  3. 14 0
      fs-service/src/main/java/com/fs/fastGpt/service/impl/AiHookServiceImpl.java
  4. 2 0
      fs-service/src/main/java/com/fs/his/param/FsCourseProductOrderComputeParam.java
  5. 2 0
      fs-service/src/main/java/com/fs/his/param/FsCourseProductOrderDoPayParam.java
  6. 44 0
      fs-service/src/main/java/com/fs/qw/domain/QwUserDelLossLog.java
  7. 6 1
      fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactMapper.java
  8. 24 0
      fs-service/src/main/java/com/fs/qw/param/QwUserDelLossLogParam.java
  9. 7 4
      fs-service/src/main/java/com/fs/qw/service/IQwExternalContactService.java
  10. 28 0
      fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java
  11. 32 0
      fs-service/src/main/java/com/fs/qw/vo/QwUserDelLossLogVO.java
  12. 2 2
      fs-service/src/main/resources/application-config-druid-hzyy.yml
  13. 26 0
      fs-service/src/main/resources/mapper/qw/QwExternalContactMapper.xml
  14. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/CourseProductController.java
  15. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/CourseProductOrderController.java
  16. 11 23
      fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java
  17. 9 24
      fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserLoginController.java
  18. 9 22
      fs-user-app/src/main/java/com/fs/app/controller/course/CourseQwLoginController.java

+ 11 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactController.java

@@ -27,6 +27,7 @@ import com.fs.qw.param.*;
 import com.fs.qw.service.*;
 import com.fs.qw.vo.QwExternalContactVO;
 import com.fs.qw.vo.QwFsUserVO;
+import com.fs.qw.vo.QwUserDelLossLogVO;
 import com.github.pagehelper.PageHelper;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -627,4 +628,14 @@ public class QwExternalContactController extends BaseController
         return PubFun.listToNewList(list, QwExternalContactVO::getId);
     }
 
+    /**
+     * 查询企业微信客户删除流失列表
+     */
+    @GetMapping("/delLossStatistics")
+    public TableDataInfo delLossStatistics(QwUserDelLossLogParam param){
+        startPage();
+        List<QwUserDelLossLogVO> qwUserDelLossLogVOS = qwExternalContactService.selectQwUserDelLossLogList(param);
+        return getDataTable(qwUserDelLossLogVOS);
+    }
+
 }

+ 15 - 7
fs-service/src/main/java/com/fs/course/service/impl/FsCourseProductOrderServiceImpl.java

@@ -33,6 +33,7 @@ import com.fs.his.param.FsCourseProductOrderDoPayParam;
 import com.fs.his.param.FsCourseProductOrderRefundParam;
 import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.service.IFsUserService;
+import com.fs.his.service.IFsUserWxService;
 import com.fs.his.utils.PhoneUtil;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuiFuRefundResult;
@@ -124,6 +125,9 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     private static final int CODE_LENGTH = 12;
 
+    @Autowired
+    private IFsUserWxService userWxService;
+
 
     /**
      * 查询拍单商品订单
@@ -267,7 +271,9 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
             return R.error("订单状态不正确");
         }
         FsUser user = userService.selectFsUserByUserId(courseProductOrder.getUserId());
-        if (user != null && StringUtils.isNotEmpty(user.getMaOpenId())) {
+        FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), user.getUserId(), 1);
+        logger.info("用户微信信息==============={}",fsUserWx);
+        if (user != null && fsUserWx != null && StringUtils.isNotEmpty(fsUserWx.getOpenId())) {
             Map<String,Object> moneys= Maps.newHashMap();
             FsCourseProduct courseProduct = JSONUtil.toBean(courseProductOrder.getProductJson(), FsCourseProduct.class);
             moneys.put("payPrice",courseProduct.getProductPrice());
@@ -310,7 +316,9 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
         }
         FsUser user = userService.selectFsUserByUserId(param.getUserId());
         logger.info("用户信息==============={}",user);
-        if (user != null && StringUtils.isNotEmpty(user.getCourseMaOpenId())) {
+        FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), user.getUserId(), 1);
+        logger.info("用户微信信息==============={}",fsUserWx);
+        if (user != null && fsUserWx != null && StringUtils.isNotEmpty(fsUserWx.getOpenId())) {
             if (courseProduct.getProductPrice().compareTo(new BigDecimal(0))==1) {
                 String json = configService.selectConfigByKey("his.pay");
                 PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
@@ -330,7 +338,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                 storePayment.setCompanyId(courseProductOrder.getCompanyId());
                 storePayment.setCompanyUserId(courseProductOrder.getCompanyUserId());
                 storePayment.setRemark("拍商品订单支付");
-                storePayment.setOpenId(user.getCourseMaOpenId());
+                storePayment.setOpenId(fsUserWx.getOpenId());
                 storePayment.setUserId(user.getUserId());
                 storePayment.setBusinessId(courseProductOrder.getCourseOrderId().toString());
                 if (storePaymentService.insertFsStorePayment(storePayment) > 0) {
@@ -348,7 +356,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         payConfig.setNotifyUrl(wxPayProperties.getNotifyUrl());
                         wxPayService.setConfig(payConfig);
                         WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
-                        orderRequest.setOpenid(user.getCourseMaOpenId());//公众号支付提供用户openid
+                        orderRequest.setOpenid(fsUserWx.getOpenId());//公众号支付提供用户openid
                         orderRequest.setBody("拍商品订单支付");
                         orderRequest.setOutTradeNo("product-" + storePayment.getPayCode());
                         orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(storePayment.getPayMoney().toString()));//测试
@@ -370,7 +378,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         p.setLowOrderId("product-" + storePayment.getPayCode());
                         p.setBody("拍商品订单支付");
                         p.setIsMinipg("1");
-                        p.setOpenId(user.getCourseMaOpenId());
+                        p.setOpenId(fsUserWx.getOpenId());
                         p.setAttach("");
                         p.setStoreid("0");
                         CreateWxOrderResult wxOrder = payService.createWxOrder(p);
@@ -400,7 +408,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         }
                         o.setPayerName("微信用户"+phone);
                         o.setGoodsInfo("拍商品订单支付"); // 订单信息
-                        o.setOpenId(user.getCourseMaOpenId());
+                        o.setOpenId(fsUserWx.getOpenId());
                         o.setOrderType(3);
                         o.setOrderId(courseProductOrder.getCourseOrderId().toString());
                         TzBankResult<PayCreateOrderResult> result = tzBankService.createOrder(o);
@@ -413,7 +421,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         logger.info("创建汇付订单");
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("T_MINIAPP");
-                        o.setOpenid(user.getCourseMaOpenId());
+                        o.setOpenid(fsUserWx.getOpenId());
                         o.setReqSeqId("product-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("拍商品订单支付");

+ 14 - 0
fs-service/src/main/java/com/fs/fastGpt/service/impl/AiHookServiceImpl.java

@@ -1831,6 +1831,20 @@ public class AiHookServiceImpl implements AiHookService {
                     }
                 }
             }
+            // 客服进行回复后就转人工10分钟
+            if(fastGptChatSession != null){
+                Calendar calendar = Calendar.getInstance();
+                //定时任务会处理10分钟以内的,所以设置20分钟
+                calendar.add(Calendar.MINUTE, 30);
+                Date expireTime = calendar.getTime();
+
+                FastGptChatSession chatSession = new FastGptChatSession();
+                chatSession.setLastTime(expireTime);
+                chatSession.setIsArtificial(1);
+                chatSession.setSessionId(fastGptChatSession.getSessionId());
+
+                fastGptChatSessionMapper.updateFastGptChatSession(chatSession);
+            }
         }
         return R.ok();
     }

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsCourseProductOrderComputeParam.java

@@ -8,4 +8,6 @@ public class FsCourseProductOrderComputeParam {
     private Long userId;
 
     private Long orderId;
+
+    private String appId;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsCourseProductOrderDoPayParam.java

@@ -11,4 +11,6 @@ public class FsCourseProductOrderDoPayParam {
     private Long orderId;
 
     private Long userId;
+
+    private String appId;
 }

+ 44 - 0
fs-service/src/main/java/com/fs/qw/domain/QwUserDelLossLog.java

@@ -0,0 +1,44 @@
+package com.fs.qw.domain;
+
+import lombok.Data;
+
+@Data
+public class QwUserDelLossLog {
+
+    private Long id;
+
+    /**
+     * 企微微信客户id
+     */
+    private Long externalContactId;
+
+    /**
+     *  公司id
+     */
+    private Long companyId;
+
+    /**
+     *  公司用户id
+     */
+    private Long companyUserId;
+
+    /**
+     *  员工id(qw_user)
+     */
+    private Long qwUserId;
+
+    /**
+     *  类型:1-删除 2-流失
+     */
+    private Integer type;
+
+    /**
+     *  时间
+     */
+    private String time;
+
+    /**
+     *  企业id
+     */
+    private String corpId;
+}

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

@@ -3,6 +3,7 @@ package com.fs.qw.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.fastGpt.domain.FastgptChatArtificialWords;
 import com.fs.qw.domain.QwExternalContact;
+import com.fs.qw.domain.QwUserDelLossLog;
 import com.fs.qw.param.*;
 import com.fs.qw.param.newparam.ExternalContactPageListParam;
 import com.fs.qw.result.QwExternalContactByQwResult;
@@ -280,7 +281,7 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
                 "and (cu.nick_name like concat('%', #{companyUser}, '%') or cu.phonenumber= #{companyUser})"+
             "</if> " +
             "        </where>"+
-            "order by ec.register_time desc,ec.create_time desc,ec.id desc"+
+            "order by ec.create_time desc,ec.id desc"+
             "</script>"})
     List<QwExternalContactVO> selectQwExternalContactListVO(QwExternalContactParam qwExternalContact);
 
@@ -428,4 +429,8 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
     List<String> selectRemarkByCompanyUserAndFsUser(@Param("userId")String userId,@Param("companyUserId") String companyUserId,@Param("cropId") String cropId);
 
     List<QwExternalContact> selectQwExternalContactByFsUserId(@Param("userId") Long userId);
+
+    int insertQwUserDelLossLog(@Param("param") QwUserDelLossLog qwUserDelLossLog);
+
+    List<QwUserDelLossLogVO> selectQwUserDelLossList(@Param("param") QwUserDelLossLogParam param);
 }

+ 24 - 0
fs-service/src/main/java/com/fs/qw/param/QwUserDelLossLogParam.java

@@ -0,0 +1,24 @@
+package com.fs.qw.param;
+
+import lombok.Data;
+
+@Data
+public class QwUserDelLossLogParam {
+    /**
+     * 企微员工账号
+     */
+    private String userId;
+    /**
+     * 统计开始时间
+     */
+    private String startTime;
+    /**
+     * 统计结束时间
+     */
+    private String endTime;
+    /**
+     *  企微员工名称
+     */
+    private String userName;
+
+}

+ 7 - 4
fs-service/src/main/java/com/fs/qw/service/IQwExternalContactService.java

@@ -12,10 +12,7 @@ import com.fs.qw.param.sidebar.ExternalContactInfoParam;
 import com.fs.qw.param.sidebar.TagGroupUpdateParam;
 import com.fs.qw.result.QwExternalContactLogVo;
 import com.fs.qw.result.QwExternalContactVo;
-import com.fs.qw.vo.ExternalContactDetailsVO;
-import com.fs.qw.vo.QwExternalContactVO;
-import com.fs.qw.vo.QwExternalListByHeavyVO;
-import com.fs.qw.vo.QwSopRuleTimeVO;
+import com.fs.qw.vo.*;
 import com.fs.qw.vo.newvo.ExternalContactListVO;
 import com.fs.qw.vo.newvo.ExternalContactPageVO;
 import com.fs.qw.vo.sidebar.ExternalContactInfoVO;
@@ -237,4 +234,10 @@ public interface IQwExternalContactService extends IService<QwExternalContact> {
 
     List<QwExternalContact> selectQwExternalContactByFsUserId(Long userId);
 
+    /**
+     * 企微用户流失删除统计
+     * @param param 查询参数
+     */
+    List<QwUserDelLossLogVO> selectQwUserDelLossLogList(QwUserDelLossLogParam param);
+
 }

+ 28 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.qw.service.impl;
 
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONException;
@@ -4103,6 +4104,17 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
             qwExternal.setDelTime(new Date());
 //            logger.info("删除用户客户更改状态");
             qwExternalContactMapper.updateQwExternalContact(qwExternal);
+
+            logger.info("添加删除客户日志");
+            QwUserDelLossLog qwUserDelLossLog = new QwUserDelLossLog();
+            qwUserDelLossLog.setExternalContactId(qwExternalContact.getId());
+            qwUserDelLossLog.setType(1);
+            qwUserDelLossLog.setTime(DateUtil.format(qwExternal.getDelTime(), "yyyy-MM-dd"));
+            qwUserDelLossLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
+            qwUserDelLossLog.setCompanyId(qwExternalContact.getCompanyId());
+            qwUserDelLossLog.setQwUserId(qwExternalContact.getQwUserId());
+            qwUserDelLossLog.setCorpId(qwExternalContact.getCorpId());
+            qwExternalContactMapper.insertQwUserDelLossLog(qwUserDelLossLog);
         }
     }
 
@@ -4121,6 +4133,17 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                 qwExternal.setStatus(3);
                 qwExternal.setLossTime(new Date());
                 qwExternalContactMapper.updateQwExternalContact(qwExternal);
+
+                logger.info("添加流失客户日志");
+                QwUserDelLossLog qwUserDelLossLog = new QwUserDelLossLog();
+                qwUserDelLossLog.setExternalContactId(qwExternalContact.getId());
+                qwUserDelLossLog.setType(2);
+                qwUserDelLossLog.setTime(DateUtil.format(qwExternal.getLossTime(), "yyyy-MM-dd"));
+                qwUserDelLossLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
+                qwUserDelLossLog.setCompanyId(qwExternalContact.getCompanyId());
+                qwUserDelLossLog.setQwUserId(qwExternalContact.getQwUserId());
+                qwUserDelLossLog.setCorpId(qwExternalContact.getCorpId());
+                qwExternalContactMapper.insertQwUserDelLossLog(qwUserDelLossLog);
             }
             if (qwExternalContact.getWayId() != null) {
                 qwContactWayService.updateQwContactWayByLoss(qwExternalContact);
@@ -5609,6 +5632,11 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         return qwExternalContactMapper.selectQwExternalContactByFsUserId(userId);
     }
 
+    @Override
+    public List<QwUserDelLossLogVO> selectQwUserDelLossLogList(QwUserDelLossLogParam param) {
+        return qwExternalContactMapper.selectQwUserDelLossList(param);
+    }
+
 
     public Boolean getSopAiChatByRedis(String qwUserId,String corpId,String externalUserId){
 

+ 32 - 0
fs-service/src/main/java/com/fs/qw/vo/QwUserDelLossLogVO.java

@@ -0,0 +1,32 @@
+package com.fs.qw.vo;
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class QwUserDelLossLogVO {
+
+    /**
+     *  员工账号(qw_user)
+     */
+    @Excel(name = "企微员工账号")
+    private String userId;
+
+    /**
+     *  员工姓名(qu_user)
+     */
+    @Excel(name = "企微员工姓名")
+    private String qwUserName;
+
+    /**
+     *  删除数量
+     */
+    @Excel(name = "删除数量")
+    private Long delCount;
+
+    /**
+     *  流失数量
+     */
+    @Excel(name = "流失数量")
+    private Long lossCount;
+}

+ 2 - 2
fs-service/src/main/resources/application-config-druid-hzyy.yml

@@ -60,8 +60,8 @@ watch:
   password3: v9xsKuqn_$d2y
 
 fs :
-  commonApi: http://172.16.0.16:8010
-  h5CommonApi: http://119.29.195.254:8010
+  commonApi: http://127.0.0.1:7771
+  h5CommonApi: http://127.0.0.1:7771
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16

+ 26 - 0
fs-service/src/main/resources/mapper/qw/QwExternalContactMapper.xml

@@ -619,5 +619,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                left join company_user cu on cu.user_id=qu.company_user_id
         where fs_user_id = #{userId}
     </select>
+    
+    <insert id="insertQwUserDelLossLog" parameterType="com.fs.qw.domain.QwUserDelLossLog">
+        insert into qw_user_del_loss_log (external_contact_id,company_id,company_user_id,type,time,qw_user_id,corp_id) values
+        (#{param.externalContactId},#{param.companyId},#{param.companyUserId},#{param.type},#{param.time},#{param.qwUserId},#{param.corpId})
+    </insert>
+
+    <select id="selectQwUserDelLossList" resultType="com.fs.qw.vo.QwUserDelLossLogVO">
+        SELECT
+        SUM(case WHEN udl.type = 1 THEN 1 ELSE 0 END) delCount,
+        SUM(case WHEN udl.type = 2 THEN 1 ELSE 0 END) lossCount,
+        qu.qw_user_id user_id,qu.qw_user_name
+        FROM `qw_user_del_loss_log` udl
+        LEFT JOIN qw_user qu ON qu.id = udl.qw_user_id
+        WHERE 1 = 1
+        <if test="param.startTime != null and param.endTime != null">
+            and udl.time BETWEEN #{param.startTime} AND #{param.endTime}
+        </if>
+        <if test="param.userName != null and param.userName != ''">
+            and qu.qw_user_name LIKE CONCAT('%',#{param.userName},'%')
+        </if>
+        <if test="param.userId != null and param.userId != ''">
+            and qu.qw_user_id LIKE CONCAT('%',#{param.userId},'%')
+        </if>
+        GROUP BY udl.qw_user_id
+    </select>
+    
 
 </mapper>

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseProductController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 @Api("拍商品订单接口")
 @RestController
-@RequestMapping(value="/store/app/courseProduct")
+@RequestMapping(value="/app/courseProduct")
 public class CourseProductController extends AppBaseController{
 
     @Autowired

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseProductOrderController.java

@@ -23,7 +23,7 @@ import java.util.List;
 
 @Api("拍商品订单接口")
 @RestController
-@RequestMapping(value="/store/app/courseProductOrder")
+@RequestMapping(value="/app/courseProductOrder")
 public class CourseProductOrderController extends AppBaseController {
 
     @Autowired

+ 11 - 23
fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -253,6 +253,8 @@ public class WxH5MpController {
         return R.ok(result);
     }
 
+
+
     @ApiOperation("处理用户与小程序的绑定")
     @PostMapping("/handleFsUserWx")
     public R handleFsUserWx(@RequestBody FsUserLoginByMpParam param) {
@@ -274,29 +276,15 @@ public class WxH5MpController {
     }
     private void handleFsUserWx(FsUser user, FsUserLoginByMpParam param, WxMaJscode2SessionResult session) {
         if (user == null) return;
-        // 尝试更新
-        boolean updated = fsUserWxService.lambdaUpdate()
-                .eq(FsUserWx::getFsUserId, user.getUserId())
-                .eq(FsUserWx::getAppId, param.getAppId())
-                .eq(FsUserWx::getOpenId, session.getOpenid())
-//                .set(FsUserWx::getCompanyId, user.getCompanyId())
-                .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
-                .set(FsUserWx::getUpdateTime, new Date())
-                .update();
-
-        // 如果更新失败(记录不存在),则插入
-        if (!updated) {
-            FsUserWx fsUserWx = new FsUserWx();
-            fsUserWx.setType(1);
-            fsUserWx.setFsUserId(user.getUserId());
-//            fsUserWx.setCompanyId(user.getCompanyId());
-            fsUserWx.setAppId(param.getAppId());
-            fsUserWx.setOpenId(session.getOpenid());
-            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
-            fsUserWx.setCreateTime(new Date());
-            fsUserWx.setUpdateTime(new Date());
-            fsUserWxService.save(fsUserWx);
-        }
+        FsUserWx fsUserWx = new FsUserWx();
+        fsUserWx.setType(1);
+        fsUserWx.setFsUserId(user.getUserId());
+        fsUserWx.setAppId(param.getAppId());
+        fsUserWx.setOpenId(session.getOpenid());
+        fsUserWx.setUnionId(session.getUnionid() != null ? session.getUnionid() : null);
+        fsUserWx.setCreateTime(new Date());
+        fsUserWx.setUpdateTime(new Date());
+        fsUserWxService.saveOrUpdateByUniqueKey(fsUserWx);
     }
 
 }

+ 9 - 24
fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserLoginController.java

@@ -224,30 +224,15 @@ public class CourseFsUserLoginController extends AppBaseController {
      * 处理用户与小程序的绑定
      */
     private void handleFsUserWx(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session) {
-        if (user == null) return;
-        // 尝试更新
-        boolean updated = fsUserWxService.lambdaUpdate()
-                .eq(FsUserWx::getFsUserId, user.getUserId())
-                .eq(FsUserWx::getAppId, param.getAppId())
-                .eq(FsUserWx::getOpenId, session.getOpenid())
-                .set(FsUserWx::getCompanyId, param.getCompanyId())
-                .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
-                .set(FsUserWx::getUpdateTime, new Date())
-                .update();
-
-        // 如果更新失败(记录不存在),则插入
-        if (!updated) {
-            FsUserWx fsUserWx = new FsUserWx();
-            fsUserWx.setType(1);
-            fsUserWx.setFsUserId(user.getUserId());
-            fsUserWx.setCompanyId(param.getCompanyId());
-            fsUserWx.setAppId(param.getAppId());
-            fsUserWx.setOpenId(session.getOpenid());
-            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
-            fsUserWx.setCreateTime(new Date());
-            fsUserWx.setUpdateTime(new Date());
-            fsUserWxService.save(fsUserWx);
-        }
+        FsUserWx fsUserWx = new FsUserWx();
+        fsUserWx.setType(1);
+        fsUserWx.setFsUserId(user.getUserId());
+        fsUserWx.setAppId(param.getAppId());
+        fsUserWx.setOpenId(session.getOpenid());
+        fsUserWx.setUnionId(session.getUnionid() != null ? session.getUnionid() : null);
+        fsUserWx.setCreateTime(new Date());
+        fsUserWx.setUpdateTime(new Date());
+        fsUserWxService.saveOrUpdateByUniqueKey(fsUserWx);
     }
 
 }

+ 9 - 22
fs-user-app/src/main/java/com/fs/app/controller/course/CourseQwLoginController.java

@@ -157,28 +157,15 @@ public class CourseQwLoginController extends AppBaseController {
      * 处理用户与小程序的绑定
      */
     private void handleFsUserWx(FsUser user, LoginParam param,WxMaJscode2SessionResult session) {
-        if (user == null) return;
-        // 尝试更新
-        boolean updated = fsUserWxService.lambdaUpdate()
-                .eq(FsUserWx::getFsUserId, user.getUserId())
-                .eq(FsUserWx::getAppId, param.getAppId())
-                .eq(FsUserWx::getOpenId, session.getOpenid())
-                .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
-                .set(FsUserWx::getUpdateTime, new Date())
-                .update();
-
-        // 如果更新失败(记录不存在),则插入
-        if (!updated) {
-            FsUserWx fsUserWx = new FsUserWx();
-            fsUserWx.setType(1);
-            fsUserWx.setFsUserId(user.getUserId());
-            fsUserWx.setAppId(param.getAppId());
-            fsUserWx.setOpenId(session.getOpenid());
-            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
-            fsUserWx.setCreateTime(new Date());
-            fsUserWx.setUpdateTime(new Date());
-            fsUserWxService.save(fsUserWx);
-        }
+        FsUserWx fsUserWx = new FsUserWx();
+        fsUserWx.setType(1);
+        fsUserWx.setFsUserId(user.getUserId());
+        fsUserWx.setAppId(param.getAppId());
+        fsUserWx.setOpenId(session.getOpenid());
+        fsUserWx.setUnionId(session.getUnionid() != null ? session.getUnionid() : null);
+        fsUserWx.setCreateTime(new Date());
+        fsUserWx.setUpdateTime(new Date());
+        fsUserWxService.saveOrUpdateByUniqueKey(fsUserWx);
         logger.info("zyp \n 【更新或插入用户与小程序{}的绑定关系】:{}", param.getAppId(), user.getUserId());
 
     }