Browse Source

feat:用户渠道绑定功能开发

chenjianhua 3 weeks ago
parent
commit
0b5696ea99

+ 3 - 0
service-base/src/main/java/com/simuwang/base/common/support/service/IService.java

@@ -13,6 +13,8 @@ import com.simuwang.base.common.support.command.BaseIdsCmd;
 import com.simuwang.base.common.support.command.BaseIdStatusCmd;
 import com.simuwang.base.common.support.query.PageQuery;
 import com.simuwang.base.common.support.vo.BaseVO;
+import com.simuwang.base.pojo.dto.sys.UserQuery;
+import com.simuwang.base.pojo.vo.sys.SysUserVO;
 
 /**
  * @author wangzaijun
@@ -130,4 +132,5 @@ public interface IService<VO extends BaseVO, T extends BaseEntity<VO>> {
     default <C extends BaseIdsCmd> void delete(C command) {
         throw new APIException("方法delete未实现");
     }
+
 }

+ 5 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/system/SysUserMapper.java

@@ -7,6 +7,7 @@ import com.simuwang.base.pojo.dos.sys.SysRoleDO;
 import com.simuwang.base.pojo.dos.sys.SysRoleUserDO;
 import com.simuwang.base.pojo.dos.sys.SysUserDO;
 import com.simuwang.base.pojo.dto.sys.RoleUserQuery;
+import com.simuwang.base.pojo.dto.sys.UserQuery;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -92,4 +93,8 @@ public interface SysUserMapper extends BaseMapper<SysUserDO> {
      * @return /
      */
     int batchUserRoles(@Param("userId") Integer userId, @Param("roleIds") List<Integer> roleIds);
+
+    List<SysUserDO> selectUserList(UserQuery query);
+
+    long countUserList(UserQuery query);
 }

+ 8 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/sys/SysUserDO.java

@@ -1,6 +1,7 @@
 package com.simuwang.base.pojo.dos.sys;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.simuwang.base.common.support.dos.DataEntity;
@@ -81,6 +82,11 @@ public class SysUserDO extends DataEntity<SysUserVO> {
      * 备注
      */
     private String remark;
+    @TableField(exist = false)
+    private String channelId;
+
+    @TableField(exist = false)
+    private String channelName;
 
     @Override
     public SysUserVO toVo() {
@@ -94,6 +100,8 @@ public class SysUserDO extends DataEntity<SysUserVO> {
         vo.setPassword(this.password);
         vo.setSex(this.sex);
         vo.setUserType(this.userType);
+        vo.setChannelId(this.channelId);
+        vo.setChannelName(this.channelName);
         vo.setStatus(this.status);
         vo.setRemark(this.remark);
         vo.setCreatorId(this.getCreatorId());

+ 14 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/UserChannelMappingVO.java

@@ -0,0 +1,14 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class UserChannelMappingVO {
+    private Integer id;
+
+    private Integer userId;
+
+    private List<Integer> channelIdList;
+
+}

+ 9 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/UserIdVO.java

@@ -0,0 +1,9 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+@Data
+public class UserIdVO {
+
+    private Integer userId;
+}

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysUserVO.java

@@ -67,6 +67,10 @@ public class SysUserVO extends BaseVO {
     private Integer creatorId;
     private Date createTime;
 
+    private String channelId;
+
+    private String channelName;
+
     @Override
     public Integer getId() {
         return this.userId;

+ 5 - 8
service-base/src/main/resources/generatorConfig.xml

@@ -6,7 +6,7 @@
 
     <!--classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选 -->
     <classPathEntry
-            location="E:\dataftp\dataftp\dataftp\lib\oceanbase-client-2.2.3.jar"/>
+            location="E:\dataftp\dataftp\dataftp\lib\DmJdbcDriver18.jar"/>
 
     <!-- 一个数据库一个context,defaultModelType="flat" 大数据字段,不分表 -->
     <context id="MysqlTables" targetRuntime="MyBatis3" defaultModelType="flat">
@@ -17,9 +17,9 @@
         </commentGenerator>
 
         <!-- jdbc连接-->
-        <jdbcConnection driverClass="com.alipay.oceanbase.obproxy.mysql.jdbc.Driver"
-                        connectionURL="jdbc:oceanbase://192.168.1.28:2881/ppw_email?generateSimpleParameterMetadata=true"
-                        userId="root" password="Smppw@2024">
+        <jdbcConnection driverClass="dm.jdbc.driver.DmDriver"
+                        connectionURL="jdbc:dm://192.168.1.39:5236/PPW_EMAIL?generateSimpleParameterMetadata=true"
+                        userId="PPW_EMAIL" password="Dmppw2024">
         </jdbcConnection>
 
         <!-- 类型转换 -->
@@ -50,9 +50,6 @@
             <property name="nullCatalogMeansCurrent" value="true"/>
         </javaClientGenerator>
 
-        <table tableName="company_cantact_info" domainObjectName="CompanyContactInfoDO"></table>
-        <table tableName="last_company_cantact_info" domainObjectName="LastCompanyContactInfoDO"></table>
-        <table tableName="contact_information" domainObjectName="ContactInformationDO"></table>
-
+        <table tableName="user_channel_mapping" domainObjectName="UserChannelMapping"></table>
     </context>
 </generatorConfiguration>

+ 47 - 0
service-base/src/main/resources/mapper/daq/system/SysUserMapper.xml

@@ -191,6 +191,53 @@
             and t.createtime between #{beginTime} and #{endTime}
         </if>
     </select>
+    <select id="selectUserList" resultType="com.simuwang.base.pojo.dos.sys.SysUserDO">
+        select su.createtime as createTime,
+               su.updatetime as updateTime,
+               su.email,
+               su.sex,
+               su.user_id as userId,
+               su.user_name as userName,
+               su.user_type as userType,
+               wm_concat(ci.id) as channelId,
+               wm_concat(ci.channel_name) as channelName
+        from sys_user su
+        left join user_channel_mapping ucm
+        on su.user_id = ucm.user_id and ucm.isvalid=1
+        left join channel_info ci
+        on ci.id = ucm.channel_id
+        where su.isvalid=1
+        <if test="keyword !='' and keyword != null">
+            and su.user_name like concat(#{keyword},'%')
+        </if>
+        <if test="email !='' and email != null">
+            and su.email like concat(#{email},'%')
+        </if>
+        <if test="phonenumber !='' and phonenumber != null">
+            and su.phonenumber like concat(#{phonenumber},'%')
+        </if>
+        <if test="status !='' and status != null">
+            and su.status = #{status}
+        </if>
+        group by su.user_id
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countUserList" resultType="java.lang.Long">
+        select count(1) from sys_user su
+        where su.isvalid=1
+        <if test="keyword !='' and keyword != null">
+            and su.user_name like concat(#{keyword},'%')
+        </if>
+        <if test="email !='' and email != null">
+            and su.email like concat(#{email},'%')
+        </if>
+        <if test="phonenumber !='' and phonenumber != null">
+            and su.phonenumber like concat(#{phonenumber},'%')
+        </if>
+        <if test="status !='' and status != null">
+            and su.status = #{status}
+        </if>
+    </select>
 
     <delete id="delUserRoleByUserId" parameterType="int">
         delete from sys_user_role where user_id =#{userId}

+ 2 - 4
service-manage/src/main/java/com/simuwang/manage/api/distribution/DistributionController.java

@@ -35,8 +35,7 @@ public class DistributionController {
     @SystemLog(value = "分红页面展示查询",type= SystemLog.Type.QUERY)
     @RequestMapping("search-distribution-list")
     public MybatisPage<DistributionTablePageVO> searchDistributionList(DistributionPageQuery distributionPageQuery) {
-        MybatisPage<DistributionTablePageVO> result = distributionService.searchDistributionList(distributionPageQuery);
-        return result;
+        return distributionService.searchDistributionList(distributionPageQuery);
     }
 
     /**
@@ -74,7 +73,6 @@ public class DistributionController {
     @SystemLog(value = "上传分红", type = SystemLog.Type.UPLOAD_OR_IMPORT)
     @PostMapping("upload-distribution")
     public ResultVo uploadDistribution(@RequestPart(value = "file") MultipartFile file) {
-        ResultVo vo = distributionService.uploadDistribution(file);
-        return vo;
+        return distributionService.uploadDistribution(file);
     }
 }

+ 28 - 0
service-manage/src/main/java/com/simuwang/manage/api/system/SysUserChannelMappingController.java

@@ -0,0 +1,28 @@
+package com.simuwang.manage.api.system;
+
+import com.simuwang.base.pojo.vo.UserChannelMappingVO;
+import com.simuwang.base.pojo.vo.UserIdVO;
+import com.simuwang.logging.SystemLog;
+import com.simuwang.manage.service.UserChannelMappingService;
+import com.smppw.common.pojo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@SystemLog(value = "用户渠道映射")
+@RestController
+@RequestMapping("/v1/sys/user-channel")
+public class SysUserChannelMappingController {
+    @Autowired
+    private  UserChannelMappingService sysUserChannelMappingService;
+
+    @RequestMapping("/save")
+    public ResultVo saveUserChannel(@RequestBody UserChannelMappingVO userChannelMappingVO) {
+        ResultVo vo = sysUserChannelMappingService.saveUserChannel(userChannelMappingVO);
+        return vo;
+    }
+
+    @RequestMapping("/get-user-channel")
+    public ResultVo getUserChannel(UserIdVO userId) {
+        return sysUserChannelMappingService.getUserChannel(userId.getUserId());
+    }
+}

+ 1 - 1
service-manage/src/main/java/com/simuwang/manage/api/system/SysUserController.java

@@ -37,7 +37,7 @@ public class SysUserController {
     @SystemLog(value = "分页搜索", saveResult = true)
     @GetMapping("page")
     public MybatisPage<SysUserVO> page(UserQuery query) {
-        return this.service.findPage(query);
+        return this.service.selectUserList(query);
     }
 
     /**

+ 11 - 0
service-manage/src/main/java/com/simuwang/manage/service/UserChannelMappingService.java

@@ -0,0 +1,11 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.pojo.vo.UserChannelMappingVO;
+import com.smppw.common.pojo.ResultVo;
+
+public interface UserChannelMappingService {
+
+    ResultVo saveUserChannel(UserChannelMappingVO userChannelMappingVO);
+
+    ResultVo getUserChannel(Integer userId);
+}

+ 71 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/UserChannelMappingServiceImpl.java

@@ -0,0 +1,71 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.mapper.daq.UserChannelMappingMapper;
+import com.simuwang.base.pojo.dos.UserChannelMappingDO;
+import com.simuwang.base.pojo.vo.UserChannelMappingVO;
+import com.simuwang.manage.service.UserChannelMappingService;
+import com.simuwang.shiro.utils.UserUtils;
+import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class UserChannelMappingServiceImpl implements UserChannelMappingService {
+
+    private static final Logger logger = LoggerFactory.getLogger(UserChannelMappingServiceImpl.class);
+    @Autowired
+    private UserChannelMappingMapper userChannelMappingMapper;
+
+    @Override
+    public ResultVo saveUserChannel(UserChannelMappingVO userChannelMappingVO) {
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        List<Integer> channelIdList = userChannelMappingVO.getChannelIdList();
+        Integer userId = userChannelMappingVO.getUserId();
+        Integer loginUserId = UserUtils.getLoginUser().getUserId();
+        try{
+            List<UserChannelMappingDO> userChannelMappingDOS = new ArrayList<>();
+            if(channelIdList.isEmpty()){
+                //表示删除
+                userChannelMappingMapper.removeUserChannel(userId,loginUserId);
+            }
+            for (Integer channelId : channelIdList) {
+                UserChannelMappingDO userChannelMappingDO = new UserChannelMappingDO();
+                userChannelMappingDO.setUserId(userId);
+                userChannelMappingDO.setChannelId(channelId);
+                userChannelMappingDO.setCreatetime(new Date());
+                UserChannelMappingDO oldUserChannelMappingDO = userChannelMappingMapper.selectUserChannelMappingDO(userChannelMappingDO);
+                if(oldUserChannelMappingDO != null){
+                    userChannelMappingDO.setId(oldUserChannelMappingDO.getId());
+                    userChannelMappingDO.setCreatorid(oldUserChannelMappingDO.getCreatorid());
+                    userChannelMappingDO.setCreatetime(oldUserChannelMappingDO.getCreatetime());
+                }
+                userChannelMappingDO.setIsvalid(1);
+                userChannelMappingDO.setUpdaterid(loginUserId);
+                userChannelMappingDO.setUpdatetime(new Date());
+                userChannelMappingDOS.add(userChannelMappingDO);
+            }
+            userChannelMappingMapper.insertOrUpdate(userChannelMappingDOS);
+        }catch (Exception e){
+            logger.error(e.getMessage(),e);
+            vo.setCode(ResultCode.SAVE_FAILED.getCode());
+            vo.setMsg(e.getMessage());
+        }
+        return vo;
+    }
+
+    @Override
+    public ResultVo getUserChannel(Integer userId) {
+        List<Integer> channelIdList = userChannelMappingMapper.getUserChannelId(userId);
+        UserChannelMappingVO userChannelMappingVO = new UserChannelMappingVO();
+        userChannelMappingVO.setChannelIdList(channelIdList);
+        userChannelMappingVO.setUserId(userId);
+        return new ResultVo(userChannelMappingVO);
+    }
+}

+ 8 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysUserServiceImpl.java

@@ -158,6 +158,14 @@ public class SysUserServiceImpl implements SysUserService {
         return dataList.stream().map(OnlyIdNameDO::toVo).collect(Collectors.toList());
     }
 
+    @Override
+    public MybatisPage<SysUserVO> selectUserList(UserQuery query) {
+        List<SysUserDO> sysUserDOList = this.mapper.selectUserList(query);
+        List<SysUserVO> sysUserVOList = sysUserDOList.stream().map(SysUserDO::toVo).collect(Collectors.toList());
+        long total = this.mapper.countUserList(query);
+        return MybatisPage.of(total,sysUserVOList);
+    }
+
     private SysUserDO getUserByIdAndUsername(String username, Integer userId) {
         LambdaQueryWrapper<SysUserDO> wrapper = Wrappers.lambdaQuery(SysUserDO.class)
                 .eq(SysUserDO::getUserName, username)

+ 5 - 0
service-manage/src/main/java/com/simuwang/manage/service/system/SysUserService.java

@@ -1,10 +1,12 @@
 package com.simuwang.manage.service.system;
 
+import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.service.IService;
 import com.simuwang.base.common.support.service.MultiJoinIService;
 import com.simuwang.base.common.support.vo.OnlyIdNameVO;
 import com.simuwang.base.pojo.dos.sys.SysUserDO;
 import com.simuwang.base.pojo.dto.GetByIdQuery;
+import com.simuwang.base.pojo.dto.sys.UserQuery;
 import com.simuwang.base.pojo.dto.sys.UserRoleBindCmd;
 import com.simuwang.base.pojo.vo.sys.SysRoleUserVO;
 import com.simuwang.base.pojo.vo.sys.SysUserVO;
@@ -31,4 +33,7 @@ public interface SysUserService extends IService<SysUserVO, SysUserDO>, MultiJoi
      * @return /
      */
     List<OnlyIdNameVO> getUserRoles(GetByIdQuery query);
+
+
+    MybatisPage<SysUserVO> selectUserList(UserQuery query);
 }