Bladeren bron

1、管理端-会员更换归属功能开发;2、h5获取课程接口调整;3、修复看课视频详情接口;4、小程序授权登录调整(不需要生成销售信息);

caoliqin 1 maand geleden
bovenliggende
commit
a12afdf16d

+ 24 - 0
fs-admin/src/main/java/com/fs/company/controller/CompanyUserController.java

@@ -139,4 +139,28 @@ public class CompanyUserController extends BaseController
         List<CompanyUser> list = companyUserService.getUserListByDeptId(user);
         return R.ok().put("data",list);
     }
+
+    /**
+     * 根据登录的用户公司获取所有的销售
+     * @return
+     */
+    @GetMapping("/getCompanyUserList")
+    public R getCompanyUserList()
+    {
+        CompanyUser cu = new CompanyUser();
+        List<CompanyUser> list = companyUserService.selectCompanyUserList(cu);
+        return  R.ok().put("data",list);
+    }
+
+    /**
+     * 更换会员归属销售
+     * @return
+     */
+    @Log(title = "更换会员归属", businessType = BusinessType.OTHER)
+    @PostMapping("/changeCompanyUser")
+    public AjaxResult changeCompanyUser(@RequestBody List<Long> userIds, @RequestParam Long companyUserId, @RequestParam Long companyId)
+    {
+        return toAjax(companyUserService.changeCompanyUser(userIds, companyUserId, companyId));
+    }
+
 }

+ 86 - 50
fs-company-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java

@@ -18,12 +18,14 @@ import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyDeptService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.core.security.SecurityUtils;
+import com.fs.store.domain.FsUser;
 import com.fs.store.service.IFsUserService;
 import com.fs.wx.miniapp.config.WxMaConfiguration;
 import com.fs.wx.miniapp.config.WxMaProperties;
 import io.jsonwebtoken.Claims;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -37,6 +39,7 @@ import java.util.Objects;
 @Api("微信小程序相关接口")
 @RestController
 @RequestMapping(value = "/app/wx/miniapp")
+@Slf4j
 public class WxCompanyUserController extends AppBaseController {
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -55,7 +58,10 @@ public class WxCompanyUserController extends AppBaseController {
     @Autowired
     private ICompanyDeptService companyDeptService;
 
-    @ApiOperation("小程序-销售授权登录")
+    @Autowired
+    private IFsUserService userService;
+
+    @ApiOperation("小程序-授权登录")
     @PostMapping("/loginByMa")
     public R login(@RequestBody LoginMaWxParam param) {
         if (StringUtils.isBlank(param.getCode())) {
@@ -70,60 +76,90 @@ public class WxCompanyUserController extends AppBaseController {
             // 解密
             WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
             WxMaUserInfo userInfo = wxService.getUserService().getUserInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
-            CompanyUser companyUser = companyUserService.getCompanyUserByOpenId(session.getOpenid());
-            String ip = IpUtil.getRequestIp();
 
-//            // 如果公司id为空(表示可能是该公司的第一位销售管理员),则需要根据电话号码判断是否存在销售,如果不存在则提示
-//            if (param.getCompanyId() == null) {
-//                if (checkPhone == null) {
-//                    throw new CustomException("由于不是管理员,不能直接登录", 401);
+            //以下暂时注释,不需要往销售表添加数据
+//            CompanyUser companyUser = companyUserService.getCompanyUserByOpenId(session.getOpenid());
+//            String ip = IpUtil.getRequestIp();
+//
+////            // 如果公司id为空(表示可能是该公司的第一位销售管理员),则需要根据电话号码判断是否存在销售,如果不存在则提示
+////            if (param.getCompanyId() == null) {
+////                if (checkPhone == null) {
+////                    throw new CustomException("由于不是管理员,不能直接登录", 401);
+////                }
+////            }
+//            if (companyUser == null) {
+//                CompanyUser checkPhone = companyUserService.getCompanyUserByPhone(phoneNoInfo.getPhoneNumber());
+//                if (checkPhone != null) {
+//                    if (checkPhone.getMaOpenId() == null) {
+//                        companyUser = checkPhone;
+//                        companyUser.setMaOpenId(session.getOpenid());
+//                        companyUser.setUserId(companyUser.getUserId());
+//                        companyUser.setUpdateTime(new DateTime());
+//                        companyUser.setLoginIp(ip);
+//                        companyUserService.updateUserProfile(companyUser);
+//                    } else {
+//                        throw new CustomException("此手机号用户已存在");
+//                    }
+//                } else {
+//                    //新增
+//                    companyUser = new CompanyUser();
+//                    companyUser.setUserName(phoneNoInfo.getPhoneNumber());
+//                    companyUser.setNickName(userInfo.getNickName() == null ? "微信用户" : userInfo.getNickName());
+//                    companyUser.setPhonenumber(phoneNoInfo.getPhoneNumber());
+//                    companyUser.setSex(userInfo.getGender());
+//                    //密码初始化为123456
+//                    String pw = "123456";
+//                    companyUser.setPassword(SecurityUtils.encryptPassword(param.getPassword() == null ? pw : param.getPassword()));
+//                    companyUser.setCreateTime(new Date());
+//                    companyUser.setCompanyId(param.getCompanyId());
+//                    companyUser.setParentId(param.getParentCompanyUseId());
+//                    companyUser.setMaOpenId(session.getOpenid());
+//
+//                    //部门信息
+//                    CompanyDept dept = companyDeptService.getDefaultCompanyDeptByCompanyId(param.getCompanyId());
+//                    if (Objects.nonNull(dept)) {
+//                        companyUser.setDeptId(dept.getDeptId());
+//                    }
+//                    companyUserService.insertUser(companyUser);
 //                }
+//            } else {
+//                CompanyUser companyUserMp = new CompanyUser();
+//                companyUserMp.setPhonenumber(phoneNoInfo.getPhoneNumber());
+//                companyUserMp.setUserId(companyUser.getUserId());
+//                companyUserMp.setUpdateTime(new DateTime());
+//                companyUserMp.setLoginIp(ip);
+//                companyUserService.updateUserProfile(companyUser);
 //            }
-            if (companyUser == null) {
-                CompanyUser checkPhone = companyUserService.getCompanyUserByPhone(phoneNoInfo.getPhoneNumber());
-                if (checkPhone != null) {
-                    if (checkPhone.getMaOpenId() == null) {
-                        companyUser = checkPhone;
-                        companyUser.setMaOpenId(session.getOpenid());
-                        companyUser.setUserId(companyUser.getUserId());
-                        companyUser.setUpdateTime(new DateTime());
-                        companyUser.setLoginIp(ip);
-                        companyUserService.updateUserProfile(companyUser);
-                    } else {
-                        throw new CustomException("此手机号用户已存在");
-                    }
-                } else {
-                    //新增
-                    companyUser = new CompanyUser();
-                    companyUser.setUserName(phoneNoInfo.getPhoneNumber());
-                    companyUser.setNickName(userInfo.getNickName() == null ? "微信用户" : userInfo.getNickName());
-                    companyUser.setPhonenumber(phoneNoInfo.getPhoneNumber());
-                    companyUser.setSex(userInfo.getGender());
-                    //密码初始化为123456
-                    String pw = "123456";
-                    companyUser.setPassword(SecurityUtils.encryptPassword(param.getPassword() == null ? pw : param.getPassword()));
-                    companyUser.setCreateTime(new Date());
-                    companyUser.setCompanyId(param.getCompanyId());
-                    companyUser.setParentId(param.getParentCompanyUseId());
-                    companyUser.setMaOpenId(session.getOpenid());
-
-                    //部门信息
-                    CompanyDept dept = companyDeptService.getDefaultCompanyDeptByCompanyId(param.getCompanyId());
-                    if (Objects.nonNull(dept)) {
-                        companyUser.setDeptId(dept.getDeptId());
-                    }
-                    companyUserService.insertUser(companyUser);
-                }
+
+            // 添加会员表数据
+            FsUser user = userService.selectFsUserByMpOpenId(session.getOpenid());
+            if (user != null) {
+                //修改
+                FsUser userMap = new FsUser();
+                userMap.setUserId(user.getUserId());
+                userMap.setMpOpenId(session.getOpenid());
+                userMap.setUnionId(session.getUnionid());
+                userMap.setUpdateTime(new DateTime());
+                userMap.setNickname(userInfo.getNickName() != null ? userInfo.getNickName() : "微信用户");
+                userMap.setAvatar(userInfo.getAvatarUrl() != null ? userInfo.getAvatarUrl() : null);
+                userMap.setPhone(phoneNoInfo.getPhoneNumber());
+                userService.updateFsUser(userMap);
             } else {
-                CompanyUser companyUserMp = new CompanyUser();
-                companyUserMp.setPhonenumber(phoneNoInfo.getPhoneNumber());
-                companyUserMp.setUserId(companyUser.getUserId());
-                companyUserMp.setUpdateTime(new DateTime());
-                companyUserMp.setLoginIp(ip);
-                companyUserService.updateUserProfile(companyUser);
+                //新增
+                user = new FsUser();
+                user.setNickname(userInfo.getNickName() != null ? userInfo.getNickName() : "微信用户");
+                user.setAvatar(userInfo.getAvatarUrl() != null ? userInfo.getAvatarUrl() : null);
+                user.setStatus(1);
+                user.setMpOpenId(session.getOpenid());
+                user.setUnionId(session.getUnionid());
+                user.setCreateTime(new Date());
+                user.setPhone(phoneNoInfo.getPhoneNumber());
+                userService.insertFsUser(user);
             }
-            String token = jwtUtils.generateToken(companyUser.getUserId());
-            return R.ok("登录成功").put("token", token).put("companyUser", companyUser);
+            log.info("保存成功的用户信息user: {}, 用户id: {}", user, user.getUserId());
+            String token = jwtUtils.generateToken(user.getUserId());
+            // 返回一个写死的数据到前端
+            return R.ok("登录成功").put("token", token).put("phoneNumber", phoneNoInfo.getPhoneNumber()).put("nickName", "微信用户").put("user", user);
         } catch (WxErrorException e) {
             this.logger.error(e.getMessage(), e);
             return R.error("授权失败," + e.getMessage());

+ 3 - 3
fs-company-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -61,7 +61,7 @@ public class WxH5MpController {
             WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
 //            FsUser user = userService.selectFsUserByUnionid(wxMpUser.getUnionId());
-            FsUser user = userService.selectFsUserByMaOpenId(wxMpUser.getOpenid());
+            FsUser user = userService.selectFsUserByMpOpenId(wxMpUser.getOpenid());
             if (user != null) {
                 //修改
                 FsUser userMap = new FsUser();
@@ -70,7 +70,7 @@ public class WxH5MpController {
                 userMap.setUnionId(wxMpUser.getUnionId());
                 userMap.setUpdateTime(new DateTime());
                 userMap.setNickname(wxMpUser.getNickname());
-                user.setAvatar(wxMpUser.getHeadImgUrl());
+                userMap.setAvatar(wxMpUser.getHeadImgUrl());
                 userService.updateFsUser(userMap);
             } else {
                 //新增
@@ -83,7 +83,7 @@ public class WxH5MpController {
                 user.setCreateTime(new Date());
                 userService.insertFsUser(user);
             }
-            log.error("用户信息user: {}, 用户id: {}", user, user.getUserId());
+            log.info("用户信息user: {}, 用户id: {}", user, user.getUserId());
             String token = jwtUtils.generateToken(user.getUserId());
             redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
             Map<String, Object> map = new HashMap<>();

+ 7 - 7
fs-company-app/src/main/java/com/fs/app/param/LoginMaWxParam.java

@@ -19,16 +19,16 @@ public class LoginMaWxParam implements Serializable {
     @ApiModelProperty(value = "小程序加密算法的初始向量")
     private String iv;
 
-    @ApiModelProperty(value = "公司id,如果不是第一位销售,都需要传")
-    private Long companyId;
+//    @ApiModelProperty(value = "公司id,如果不是第一位销售,都需要传")
+//    private Long companyId;
 
 //    @ApiModelProperty(value = "电话号码")
 //    private String phoneNumber;
 
-    @ApiModelProperty(value = "上级销售id,如果没有则不传")
-    private Long parentCompanyUseId;
-
-    @ApiModelProperty(value = "用户密码")
-    private String password;
+//    @ApiModelProperty(value = "上级销售id,如果没有则不传")
+//    private Long parentCompanyUseId;
+//
+//    @ApiModelProperty(value = "用户密码")
+//    private String password;
 
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyUserService.java

@@ -174,4 +174,11 @@ public interface ICompanyUserService {
      * @return
      */
     CompanyUser getCompanyUserByPhone(String phoneNumber);
+
+    /**
+     * 更改会员归属
+     * @param userIds
+     * @return
+     */
+    int changeCompanyUser(List<Long> userIds, Long companyUserId, Long companyId);
 }

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

@@ -1,7 +1,10 @@
 package com.fs.company.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.annotation.DataScope;
 import com.fs.common.core.domain.R;
+import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.*;
@@ -15,6 +18,7 @@ import com.fs.his.vo.CitysAreaVO;
 import com.fs.qw.vo.CompanyUserQwVO;
 import com.fs.qw.vo.QwUserVO;
 import com.fs.his.vo.OptionsVO;
+import com.fs.store.mapper.FsUserMapper;
 import com.fs.store.service.IFsCityService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,6 +56,9 @@ public class CompanyUserServiceImpl implements ICompanyUserService
     @Autowired
     public IFsCityService iFsCityService;
 
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
     /**
      * 查询物业公司管理员信息
      *
@@ -444,6 +451,16 @@ public class CompanyUserServiceImpl implements ICompanyUserService
         return companyUserMapper.getCompanyUserByPhone(phoneNumber);
     }
 
+    @Override
+    public int changeCompanyUser(List<Long> userIds, Long companyUserId, Long companyId) {
+
+        CompanyUser toUser = companyUserMapper.selectCompanyUserById(companyUserId);
+        if (Objects.isNull(toUser)) {
+            throw new ServiceException("需要更换归属的销售不存在");
+        }
+       return fsUserMapper.batchUpdateUserCompanyUser(userIds, companyUserId, companyId);
+    }
+
     /**
      * 批量审核用户
      * @param userIds 用户ID集合

+ 3 - 0
fs-service-system/src/main/java/com/fs/course/vo/newfs/FsUserCourseVideoPageListVO.java

@@ -43,5 +43,8 @@ public class FsUserCourseVideoPageListVO extends BaseEntity {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    @ApiModelProperty(value = "营期id")
+    private Long periodId;
+
 
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsUserMapper.java

@@ -281,4 +281,6 @@ public interface FsUserMapper
      */
     List<FsCourseAnalysisCountVO> courseAnalysisWatchLog(CourseAnalysisParam param);
 
+    int batchUpdateUserCompanyUser(@Param("userIds") List<Long> userIds, @Param("companyUserId") Long companyUserId, @Param("companyId") Long companyId);
+
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -690,6 +690,8 @@ public class FsUserServiceImpl implements IFsUserService
         if (Objects.isNull(companyUser)){
             return ResponseResult.fail(500,"销售不存在");
         }
+        // todo 根据公司判断是否需要启用
+
 
         // 关联销售
         fsUser.setCompanyId(param.getCompanyId());

+ 2 - 0
fs-service-system/src/main/resources/db/upgrade/20250428.sql

@@ -64,3 +64,5 @@ END IF;
 END;
 
 CALL add_tb_column;
+
+DROP PROCEDURE IF EXISTS add_tb_column;

+ 2 - 1
fs-service-system/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -236,7 +236,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             video.course_id,
             video.STATUS,
             video.course_sort,
-        course.course_name
+            course.course_name,
+            fcpd.period_id
         FROM `fs_user_course_video` video
         left join fs_user_course_period_days fcpd on fcpd.video_id = video.video_id
         left join fs_user_course_period fcp on fcp.period_id = fcpd.period_id

+ 10 - 0
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -1440,4 +1440,14 @@
         fwl.video_id
     </select>
 
+    <update id="batchUpdateUserCompanyUser">
+        update fs_user
+        set company_id = #{companyId},
+        company_user_id = #{companyUserId}
+        where
+        <foreach collection="userIds" separator="or" item="userId" index="index">
+            user_id = #{userId}
+        </foreach>
+    </update>
+
 </mapper>

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

@@ -71,7 +71,7 @@ public class WxH5MpController {
             if(param.getCompanyId() != null){
                 company = companyService.selectCompanyById(param.getCompanyId());
             }
-            FsUser user = userService.selectFsUserByUnionid(wxMpUser.getUnionId());
+            FsUser user = userService.selectFsUserByMpOpenId(wxMpUser.getOpenid());
             if (user != null) {
                 //修改
                 FsUser userMap = new FsUser();