Ver Fonte

我得项目会员-通过筛选出来后可以勾选对应会员,一键解绑

luolinsong há 3 dias atrás
pai
commit
a53b81f517

+ 11 - 0
fs-company/src/main/java/com/fs/user/FsUserAdminController.java

@@ -1,6 +1,7 @@
 package com.fs.user;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
@@ -465,4 +466,14 @@ public class FsUserAdminController extends BaseController {
         }
     }
 
+    /**
+     * 解绑会员
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/{ids}")
+    public R editUser(@PathVariable String[] ids) {
+        return fsUserCompanyUserService.deleFsUserCompanyUserByIds(ids);
+    }
+    
 }

+ 3 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCompanyBindMapper.java

@@ -64,4 +64,7 @@ public interface FsUserCompanyBindMapper extends BaseMapper<FsUserCompanyBind>{
     int deleteFsUserCompanyBindByIds(Long[] ids);
 
     List<UserWatchLogListVo> getWatchLogList(UserWatchLogParam param);
+    
+    int deleteFsUserCompanyBindByCompanyUserIdAndFsUserId(@Param("companyUserId") Long companyUserId,
+                                                          @Param("fsUserId") Long fsUserId);
 }

+ 1 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCompanyUserMapper.java

@@ -104,4 +104,5 @@ public interface FsUserCompanyUserMapper extends BaseMapper<FsUserCompanyUser>{
      */
     List<Long> selectUserIdsByPeriodIdAndCompanyUserId(@Param("periodId") Long periodId, 
                                                         @Param("companyUserId") Long companyUserId);
+     List<FsUserCompanyUser> getFsUserCompanyUserByIds(@Param("ids") Long[] ids);
 }

+ 3 - 0
fs-service/src/main/java/com/fs/course/service/IFsUserCompanyUserService.java

@@ -1,6 +1,7 @@
 package com.fs.course.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.common.core.domain.R;
 import com.fs.course.domain.FsUserCompanyUser;
 import com.fs.qw.dto.UserProjectDTO;
 
@@ -128,4 +129,6 @@ public interface IFsUserCompanyUserService extends IService<FsUserCompanyUser>{
      * @return Boolean
      */
     Boolean batchUpdateStatus(List<Long> ids, int status);
+    
+    R deleFsUserCompanyUserByIds(String[] ids);
 }

+ 57 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCompanyUserServiceImpl.java

@@ -1,14 +1,19 @@
 package com.fs.course.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.course.domain.FsUserCompanyUser;
+import com.fs.course.mapper.FsUserCompanyBindMapper;
 import com.fs.course.mapper.FsUserCompanyUserMapper;
 import com.fs.course.service.IFsUserCompanyUserService;
 import com.fs.qw.dto.UserProjectDTO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -24,6 +29,11 @@ import java.util.Objects;
 @Service
 public class FsUserCompanyUserServiceImpl extends ServiceImpl<FsUserCompanyUserMapper, FsUserCompanyUser> implements IFsUserCompanyUserService {
 
+    @Autowired
+    private FsUserCompanyUserMapper fsUserCompanyUserMapper;
+    @Autowired
+    private FsUserCompanyBindMapper fsUserCompanyBindMapper;
+
     /**
      * 查询微信用户和销售关系
      *
@@ -223,4 +233,51 @@ public class FsUserCompanyUserServiceImpl extends ServiceImpl<FsUserCompanyUserM
         }
         return baseMapper.batchUpdateStatus(ids, status) > 0;
     }
+
+    /**
+     * 会员解绑
+     * @param ids
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R deleFsUserCompanyUserByIds(String[] ids) {
+        if (ids == null || ids.length == 0) {
+            return R.error("解绑数据不能为空!");
+        }
+        try {
+            Long[] idArray = convertToLongArray(ids);
+            List<FsUserCompanyUser> FsUserCompanyUsers = fsUserCompanyUserMapper.getFsUserCompanyUserByIds(idArray);
+            fsUserCompanyUserMapper.deleteFsUserCompanyUserByIds(idArray);
+            if (CollectionUtils.isNotEmpty(FsUserCompanyUsers)) {
+                for (FsUserCompanyUser fsUserCompanyUser : FsUserCompanyUsers) {
+                    fsUserCompanyBindMapper.deleteFsUserCompanyBindByCompanyUserIdAndFsUserId(fsUserCompanyUser.getCompanyUserId(), fsUserCompanyUser.getUserId());
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("解绑失败", e);
+        }
+        return R.ok();
+    }
+
+    public static Long[] convertToLongArray(String[] stringArray) {
+        if (stringArray == null || stringArray.length == 0) {
+            return new Long[0];
+        }
+        Long[] longArray = new Long[stringArray.length];
+
+        for (int i = 0; i < stringArray.length; i++) {
+            String str = stringArray[i];
+            try {
+                if (str == null || str.trim().isEmpty()) {
+                    throw new NumberFormatException("空字符串无法转换为 long");
+                }
+                longArray[i] = Long.parseLong(str.trim());
+            } catch (NumberFormatException e) {
+                throw new IllegalArgumentException(
+                        String.format("索引 %d 的元素 \"%s\" 无法转换为 long", i, str), e);
+            }
+        }
+        return longArray;
+    }
 }

+ 2 - 0
fs-service/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java

@@ -107,4 +107,6 @@ public class FsUserPageListVO {
     private BigDecimal isBuy;
     //营期名称
     private String periodName;
+    //fs_user_company_user 主键
+    private Long fsUserCompanyUserId;
 }

+ 3 - 0
fs-service/src/main/resources/mapper/course/FsUserCompanyBindMapper.xml

@@ -162,4 +162,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         order by create_time desc
     </select>
+     <delete id="deleteFsUserCompanyBindByCompanyUserIdAndFsUserId" parameterType="Long">
+        delete  from fs_user_company_bind where fs_user_id=#{fsUserId} and company_user_id=#{companyUserId}
+    </delete>
 </mapper>

+ 8 - 0
fs-service/src/main/resources/mapper/course/FsUserCompanyUserMapper.xml

@@ -210,5 +210,13 @@
         GROUP BY
             a.user_id
     </select>
+   
+    <select id="getFsUserCompanyUserByIds" resultType="com.fs.course.domain.FsUserCompanyUser">
+        <include refid="selectFsUserCompanyUserVo"/>
+        where id in 
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+    </select>
 
 </mapper>

+ 1 - 0
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -340,6 +340,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_user.status,
         fs_user.create_time,
         fs_user.remark,
+        ucu.id as fsUserCompanyUserId,
         ucu.company_user_id,
         ucu.company_id,
         ucu.project_id,