Sfoglia il codice sorgente

Merge branch 'test'

zhaoxian 3 anni fa
parent
commit
3dfe250f78
21 ha cambiato i file con 398 aggiunte e 207 eliminazioni
  1. 2 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/SysUserMapper.java
  2. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml
  3. 2 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/ISysUserService.java
  4. 79 53
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/SysUserServiceImpl.java
  5. 2 2
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java
  6. 160 50
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/AiKuaishouAccountAutoStrategy.java
  7. 20 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/KuaiShouAppListController.java
  8. 4 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaiShouAppList.java
  9. 2 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouAppListMapper.java
  10. 11 2
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouAppListMapper.xml
  11. 2 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouAppListService.java
  12. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouAppListServiceImpl.java
  13. 1 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  14. 15 11
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/controller/KuaishouChannelController.java
  15. 3 4
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/entity/KuaishouChannel.java
  16. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/entity/KuaishouChannelAppInfo.java
  17. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/entity/KuaishouChannelCreateStrategy.java
  18. 1 1
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/mapper/KuaishouChannelMapper.java
  19. 41 38
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/mapper/xml/KuaishouChannelMapper.xml
  20. 31 44
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/service/impl/KuaishouChannelServiceImpl.java
  21. 2 2
      jeecg-cloud-module/jeecg-cloud-system-start/src/main/resources/application-test.yml

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/SysUserMapper.java

@@ -186,4 +186,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return
      */
     Integer updUserDesignLeaderById(@Param("userId") String userId,@Param("designTeamLeaderName") String designTeamLeaderName);
+
+    List<String> getUserIdsByLeaderId(@Param("leaderId")String leaderId);
 }

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml

@@ -348,4 +348,9 @@ SELECT
         UPDATE sys_user SET design_team_leader_name = #{designTeamLeaderName} WHERE id = #{userId}
     </update>
 
+    <select id="getUserIdsByLeaderId" resultType="java.lang.String">
+        select id from sys_user
+        where leader_id = #{leaderId}
+    </select>
+
 </mapper>

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/ISysUserService.java

@@ -294,4 +294,6 @@ public interface ISysUserService extends IService<SysUser> {
     List<String> userIdToUsername(Collection<String> userIdList);
 
     List<SysUser> queryAdminPageList(SysUser user);
+
+    void getItsPersonnelIds(List<String> rids,String userId);
 }

+ 79 - 53
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/SysUserServiceImpl.java

@@ -1,7 +1,16 @@
 package cn.com.ctop.common.module.service.impl;
 
-import cn.com.ctop.common.module.entity.*;
-import cn.com.ctop.common.module.mapper.*;
+import cn.com.ctop.common.module.entity.SysDepartRole;
+import cn.com.ctop.common.module.entity.SysDepartRoleUser;
+import cn.com.ctop.common.module.entity.SysRole;
+import cn.com.ctop.common.module.entity.SysUserDepart;
+import cn.com.ctop.common.module.mapper.SysDepartMapper;
+import cn.com.ctop.common.module.mapper.SysDepartRoleMapper;
+import cn.com.ctop.common.module.mapper.SysDepartRoleUserMapper;
+import cn.com.ctop.common.module.mapper.SysPermissionMapper;
+import cn.com.ctop.common.module.mapper.SysRoleMapper;
+import cn.com.ctop.common.module.mapper.SysUserDepartMapper;
+import cn.com.ctop.common.module.mapper.SysUserMapper;
 import cn.com.ctop.common.module.model.SysUserSysDepartModel;
 import cn.com.ctop.common.module.service.ISysUserService;
 import cn.com.ctop.common.module.utils.Check;
@@ -14,7 +23,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
@@ -40,7 +48,14 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -106,7 +121,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
 
-
     @Override
     public List<SysUserVo> getAllUser(String userName, String status) {
         return userMapper.getAllUser(userName, status);
@@ -150,25 +164,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     /**
-     *
-     * @description: 修改用户 设计组长姓名
-     *用户 分配角色 为 设计组长  用户设计组长姓名 为自己真实姓名
-     * @param userId 用户id
+     * @param userId   用户id
      * @param userName 设计组长姓名
-     * @param roleId 角色id
+     * @param roleId   角色id
+     * @description: 修改用户 设计组长姓名
+     * 用户 分配角色 为 设计组长  用户设计组长姓名 为自己真实姓名
      * @return: java.lang.Integer
      * @author: zianY
      */
     @Override
-    public Integer updUserDesignLeaderById(String userId,String userName,String roleId) {
+    public Integer updUserDesignLeaderById(String userId, String userName, String roleId) {
         String designTeamLeaderName = "";
-        if (!Check.isNull(roleId)){
+        if (!Check.isNull(roleId)) {
             SysRole sysRole = sysRoleMapper.selectById(roleId);
-            if ("designTeamLeader".equals(sysRole.getRoleCode())){
+            if ("designTeamLeader".equals(sysRole.getRoleCode())) {
                 designTeamLeaderName = userName;
             }
         }
-       return userMapper.updUserDesignLeaderById(userId,designTeamLeaderName);
+        return userMapper.updUserDesignLeaderById(userId, designTeamLeaderName);
     }
 
 
@@ -215,7 +228,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteUser(String userId) {
         //1.删除用户
@@ -224,7 +237,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteBatchUsers(String userIds) {
         //1.删除用户
@@ -242,7 +255,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Transactional
     public void addUserWithRole(SysUser user, String roles) {
         this.save(user);
-        if(oConvertUtils.isNotEmpty(roles)) {
+        if (oConvertUtils.isNotEmpty(roles)) {
             String[] arr = roles.split(",");
             for (String roleId : arr) {
                 SysUserRole userRole = new SysUserRole(user.getId(), roleId);
@@ -252,13 +265,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    @CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, allEntries=true)
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     @Transactional
     public void editUserWithRole(SysUser user, String roles) {
         this.updateById(user);
         //先删后加
         sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
-        if(oConvertUtils.isNotEmpty(roles)) {
+        if (oConvertUtils.isNotEmpty(roles)) {
             String[] arr = roles.split(",");
             for (String roleId : arr) {
                 SysUserRole userRole = new SysUserRole(user.getId(), roleId);
@@ -275,6 +288,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     /**
      * 通过用户名获取用户角色集合
+     *
      * @param username 用户名
      * @return 角色集合
      */
@@ -305,7 +319,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 permissionSet.add(po.getPerms());
             }
         }
-        log.info("-------通过数据库读取用户拥有的权限Perms------username: "+ username+",Perms size: "+ (permissionSet==null?0:permissionSet.size()) );
+        log.info("-------通过数据库读取用户拥有的权限Perms------username: " + username + ",Perms size: " + (permissionSet == null ? 0 : permissionSet.size()));
         return permissionSet;
     }
 
@@ -319,7 +333,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
 
         LoginUser user = sysBaseApi.getUserByName(username);
-        if(user!=null) {
+        if (user != null) {
             info.setSysUserCode(user.getUsername());
             info.setSysUserName(user.getRealname());
             info.setSysOrgCode(user.getOrgCode());
@@ -328,12 +342,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         //多部门支持in查询
         List<SysDepart> list = sysDepartMapper.queryUserDeparts(user.getId());
         List<String> sysMultiOrgCode = new ArrayList<String>();
-        if(list==null || list.size()==0) {
+        if (list == null || list.size() == 0) {
             //当前用户无部门
             //sysMultiOrgCode.add("0");
-        }else if(list.size()==1) {
+        } else if (list.size() == 1) {
             sysMultiOrgCode.add(list.get(0).getOrgCode());
-        }else {
+        } else {
             info.setOneDepart(false);
             for (SysDepart dpt : list) {
                 sysMultiOrgCode.add(dpt.getOrgCode());
@@ -346,13 +360,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     // 根据部门Id查询
     @Override
-    public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId,String username) {
-        return userMapper.getUserByDepId(page, departId,username);
+    public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username) {
+        return userMapper.getUserByDepId(page, departId, username);
     }
 
     @Override
     public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username) {
-        return userMapper.getUserByDepIds(page, departIds,username);
+        return userMapper.getUserByDepIds(page, departIds, username);
     }
 
     @Override
@@ -393,13 +407,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     // 根据角色Id查询
     @Override
     public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {
-        return userMapper.getUserByRoleId(page,roleId,username);
+        return userMapper.getUserByRoleId(page, roleId, username);
     }
 
 
     @Override
-    @CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, key="#username")
-    public void updateUserDepart(String username,String orgCode) {
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, key = "#username")
+    public void updateUserDepart(String username, String orgCode) {
         baseMapper.updateUserDepart(username, orgCode);
     }
 
@@ -419,7 +433,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Transactional
     public void addUserWithDepart(SysUser user, String selectedParts) {
 //		this.save(user);  //保存角色的时候已经添加过一次了
-        if(oConvertUtils.isNotEmpty(selectedParts)) {
+        if (oConvertUtils.isNotEmpty(selectedParts)) {
             String[] arr = selectedParts.split(",");
             for (String deaprtId : arr) {
                 SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId);
@@ -431,32 +445,32 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     public void editUserWithDepart(SysUser user, String departs) {
         this.updateById(user);  //更新角色的时候已经更新了一次了,可以再跟新一次
         String[] arr = {};
-        if(oConvertUtils.isNotEmpty(departs)){
+        if (oConvertUtils.isNotEmpty(departs)) {
             arr = departs.split(",");
         }
         //查询已关联部门
         List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
-        if(userDepartList != null && userDepartList.size()>0){
-            for(SysUserDepart depart : userDepartList ){
+        if (userDepartList != null && userDepartList.size() > 0) {
+            for (SysUserDepart depart : userDepartList) {
                 //修改已关联部门删除部门用户角色关系
-                if(!Arrays.asList(arr).contains(depart.getDepId())){
+                if (!Arrays.asList(arr).contains(depart.getDepId())) {
                     List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(
-                            new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId,depart.getDepId()));
+                            new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId()));
                     List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList());
-                    if(roleIds != null && roleIds.size()>0){
+                    if (roleIds != null && roleIds.size() > 0) {
                         departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId())
-                                .in(SysDepartRoleUser::getDroleId,roleIds));
+                                .in(SysDepartRoleUser::getDroleId, roleIds));
                     }
                 }
             }
         }
         //先删后加
         sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
-        if(oConvertUtils.isNotEmpty(departs)) {
+        if (oConvertUtils.isNotEmpty(departs)) {
             for (String departId : arr) {
                 SysUserDepart userDepart = new SysUserDepart(user.getId(), departId);
                 sysUserDepartMapper.insert(userDepart);
@@ -467,6 +481,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     /**
      * 校验用户是否有效
+     *
      * @param sysUser
      * @return
      */
@@ -564,7 +579,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     @Override
     public List<SysUser> queryByDepIds(List<String> departIds, String username) {
-        return userMapper.queryByDepIds(departIds,username);
+        return userMapper.queryByDepIds(departIds, username);
     }
 
     @Override
@@ -573,7 +588,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         //step.1 保存用户
         this.save(user);
         //step.2 保存角色
-        if(oConvertUtils.isNotEmpty(selectedRoles)) {
+        if (oConvertUtils.isNotEmpty(selectedRoles)) {
             String[] arr = selectedRoles.split(",");
             for (String roleId : arr) {
                 SysUserRole userRole = new SysUserRole(user.getId(), roleId);
@@ -581,7 +596,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             }
         }
         //step.3 保存所属部门
-        if(oConvertUtils.isNotEmpty(selectedDeparts)) {
+        if (oConvertUtils.isNotEmpty(selectedDeparts)) {
             String[] arr = selectedDeparts.split(",");
             for (String deaprtId : arr) {
                 SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId);
@@ -592,14 +607,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     public void editUser(SysUser user, String roles, String departs) {
         //step.1 修改用户基础信息
         this.updateById(user);
         //step.2 修改角色
         //处理用户角色 先删后加
         sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
-        if(oConvertUtils.isNotEmpty(roles)) {
+        if (oConvertUtils.isNotEmpty(roles)) {
             String[] arr = roles.split(",");
             for (String roleId : arr) {
                 SysUserRole userRole = new SysUserRole(user.getId(), roleId);
@@ -609,28 +624,28 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         //step.3 修改部门
         String[] arr = {};
-        if(oConvertUtils.isNotEmpty(departs)){
+        if (oConvertUtils.isNotEmpty(departs)) {
             arr = departs.split(",");
         }
         //查询已关联部门
         List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
-        if(userDepartList != null && userDepartList.size()>0){
-            for(SysUserDepart depart : userDepartList ){
+        if (userDepartList != null && userDepartList.size() > 0) {
+            for (SysUserDepart depart : userDepartList) {
                 //修改已关联部门删除部门用户角色关系
-                if(!Arrays.asList(arr).contains(depart.getDepId())){
+                if (!Arrays.asList(arr).contains(depart.getDepId())) {
                     List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(
-                            new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId,depart.getDepId()));
+                            new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId()));
                     List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList());
-                    if(roleIds != null && roleIds.size()>0){
+                    if (roleIds != null && roleIds.size() > 0) {
                         departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId())
-                                .in(SysDepartRoleUser::getDroleId,roleIds));
+                                .in(SysDepartRoleUser::getDroleId, roleIds));
                     }
                 }
             }
         }
         //先删后加
         sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
-        if(oConvertUtils.isNotEmpty(departs)) {
+        if (oConvertUtils.isNotEmpty(departs)) {
             for (String departId : arr) {
                 SysUserDepart userDepart = new SysUserDepart(user.getId(), departId);
                 sysUserDepartMapper.insert(userDepart);
@@ -655,4 +670,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public List<SysUser> queryAdminPageList(SysUser user) {
         return userMapper.queryPageList(user);
     }
+
+    @Override
+    public void getItsPersonnelIds(List<String> rids, String userId) {
+        List<String> ids = userMapper.getUserIdsByLeaderId(userId);
+        rids.add(userId);
+        if (!Check.isNull(ids)) {
+            for (String id : ids) {
+                getItsPersonnelIds(rids, id);
+            }
+        }
+    }
 }

+ 2 - 2
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java

@@ -223,8 +223,8 @@ public class UserAllocationServiceImpl extends ServiceImpl<UserAllocationMapper,
     }
 
     @Override
-    public List<JSONObject> getUserIdListByProductId(Long productId,String userId) {
-        return userAllocationMapper.getUserIdListByProductId(productId,userId);
+    public List<JSONObject> getUserIdListByProductId(Long productId, String userId) {
+        return userAllocationMapper.getUserIdListByProductId(productId, userId);
     }
 
     @Override

+ 160 - 50
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/AiKuaishouAccountAutoStrategy.java

@@ -184,201 +184,311 @@ public class AiKuaishouAccountAutoStrategy {
     @Excel(name = "url类型", width = 15)
     @ApiModelProperty(value = "url类型")
     private Integer webUriType;
-    /**投放链接*/
+    /**
+     * 投放链接
+     */
     @Excel(name = "投放链接", width = 15)
     @ApiModelProperty(value = "投放链接")
     private String url;
-    /**调起链接*/
+    /**
+     * 调起链接
+     */
     @Excel(name = "调起链接", width = 15)
     @ApiModelProperty(value = "调起链接")
     private String schemaUri;
-    /**应用ID*/
+    /**
+     * 应用ID
+     */
     @Excel(name = "应用ID", width = 15)
     @ApiModelProperty(value = "应用ID")
     private Long appId;
-    /**创意展现方式 1-轮播  2-优选*/
+    /**
+     * 创意展现方式 1-轮播  2-优选
+     */
     @Excel(name = "创意展现方式 1-轮播  2-优选", width = 15)
     @ApiModelProperty(value = "创意展现方式 1-轮播  2-优选")
     private Integer showMode;
-    /**投放方式 1-加速投放  2-平滑投放 3-优先低成本*/
+    /**
+     * 投放方式 1-加速投放  2-平滑投放 3-优先低成本
+     */
     @Excel(name = "投放方式 1-加速投放  2-平滑投放 3-优先低成本", width = 15)
     @ApiModelProperty(value = "投放方式 1-加速投放  2-平滑投放 3-优先低成本")
     private Integer speed;
-    /**预约广告*/
+    /**
+     * 预约广告
+     */
     @Excel(name = "预约广告", width = 15)
     @ApiModelProperty(value = "预约广告")
     private Integer siteType;
-    /**游戏礼包码*/
+    /**
+     * 游戏礼包码
+     */
     @Excel(name = "游戏礼包码", width = 15)
     @ApiModelProperty(value = "游戏礼包码")
     private String giftData;
-    /**是否使用落地页前置功能*/
+    /**
+     * 是否使用落地页前置功能
+     */
     @Excel(name = "是否使用落地页前置功能", width = 15)
     @ApiModelProperty(value = "是否使用落地页前置功能")
     private Integer videoLandingPage;
-    /**智能定向*/
+    /**
+     * 智能定向
+     */
     @Excel(name = "智能定向", width = 15)
     @ApiModelProperty(value = "智能定向")
     private Integer autoTarget;
-    /**是否开启自动生成视频*/
+    /**
+     * 是否开启自动生成视频
+     */
     @Excel(name = "是否开启自动生成视频", width = 15)
     @ApiModelProperty(value = "是否开启自动生成视频")
     private Integer autoCreatePhoto;
-    /**创意名称*/
+    /**
+     * 创意名称
+     */
     @Excel(name = "创意名称", width = 15)
     @ApiModelProperty(value = "创意名称")
     private String creativeName;
-    /**行动号召按钮文案*/
+    /**
+     * 行动号召按钮文案
+     */
     @Excel(name = "行动号召按钮文案", width = 15)
     @ApiModelProperty(value = "行动号召按钮文案")
     private String actionBarText;
-    /**广告语*/
+    /**
+     * 广告语
+     */
     @Excel(name = "广告语", width = 15)
     @ApiModelProperty(value = "广告语")
     private String description;
-    /**便利贴创意短广告语*/
+    /**
+     * 便利贴创意短广告语
+     */
     @Excel(name = "便利贴创意短广告语", width = 15)
     @ApiModelProperty(value = "便利贴创意短广告语")
     private String shortSlogan;
-    /**封面广告语标题*/
+    /**
+     * 封面广告语标题
+     */
     @Excel(name = "封面广告语标题", width = 15)
     @ApiModelProperty(value = "封面广告语标题")
     private String stickerTitle;
-    /**贴纸样式类型*/
+    /**
+     * 贴纸样式类型
+     */
     @Excel(name = "贴纸样式类型", width = 15)
     @ApiModelProperty(value = "贴纸样式类型")
     private String overlayType;
-    /**广告标签*/
+    /**
+     * 广告标签
+     */
     @Excel(name = "广告标签", width = 15)
     @ApiModelProperty(value = "广告标签")
     private String exposeTag;
-    /**广告标签2期*/
+    /**
+     * 广告标签2期
+     */
     @Excel(name = "广告标签2期", width = 15)
     @ApiModelProperty(value = "广告标签2期")
     private String newExposeTag;
-    /**安卓下载中间页ID*/
+    /**
+     * 安卓下载中间页ID
+     */
     @Excel(name = "安卓下载中间页ID", width = 15)
     @ApiModelProperty(value = "安卓下载中间页ID")
     private String siteId;
-    /**第三方点击检测链接*/
+    /**
+     * 第三方点击检测链接
+     */
     @Excel(name = "第三方点击检测链接", width = 15)
     @ApiModelProperty(value = "第三方点击检测链接")
     private String clickTrackUrl;
-    /**第三方开始播放监测链接*/
+    /**
+     * 第三方开始播放监测链接
+     */
     @Excel(name = "第三方开始播放监测链接", width = 15)
     @ApiModelProperty(value = "第三方开始播放监测链接")
     private String impressionUrl;
-    /**第三方有效播放监测链接*/
+    /**
+     * 第三方有效播放监测链接
+     */
     @Excel(name = "第三方有效播放监测链接", width = 15)
     @ApiModelProperty(value = "第三方有效播放监测链接")
     private String adPhotoPlayedT3sUrl;
-    /**第三方点击按钮监测链接*/
+    /**
+     * 第三方点击按钮监测链接
+     */
     @Excel(name = "第三方点击按钮监测链接", width = 15)
     @ApiModelProperty(value = "第三方点击按钮监测链接")
     private String actionbarClickUrl;
-    /**创意分类*/
+    /**
+     * 创意分类
+     */
     @Excel(name = "创意分类", width = 15)
     @ApiModelProperty(value = "创意分类")
     private Integer creativeCategory;
-    /**创意标签*/
+    /**
+     * 创意标签
+     */
     @Excel(name = "创意标签", width = 15)
     @ApiModelProperty(value = "创意标签")
     private String creativeTag;
-    /**物料关联的封面个数*/
+    /**
+     * 物料关联的封面个数
+     */
     @Excel(name = "物料关联的封面个数", width = 15)
     @ApiModelProperty(value = "物料关联的封面个数")
     private Integer imageCnt;
-    /**程序化创意2.0-是否开启智能抽帧*/
+    /**
+     * 程序化创意2.0-是否开启智能抽帧
+     */
     @Excel(name = "程序化创意2.0-是否开启智能抽帧", width = 15)
     @ApiModelProperty(value = "程序化创意2.0-是否开启智能抽帧")
     private Integer smartCover;
-    /**程序化创意2.0-是否开启素材挖掘*/
+    /**
+     * 程序化创意2.0-是否开启素材挖掘
+     */
     @Excel(name = "程序化创意2.0-是否开启素材挖掘", width = 15)
     @ApiModelProperty(value = "程序化创意2.0-是否开启素材挖掘")
     private Integer assetMining;
-    /**单/多应用,1单应用,2多应用*/
+    /**
+     * 单/多应用,1单应用,2多应用
+     */
     @Excel(name = "单/多应用,1单应用,2多应用", width = 15)
     @ApiModelProperty(value = "单/多应用,1单应用,2多应用")
     private Integer singleAppid;
-    /**应用ID列表*/
+    /**
+     * 应用ID列表
+     */
     @Excel(name = "应用ID列表", width = 15)
     @ApiModelProperty(value = "应用ID列表")
     private String appIdArray;
-    /**是否通用监测链接*/
+    /**
+     * 是否通用监测链接
+     */
     @Excel(name = "是否通用监测链接", width = 15)
     @ApiModelProperty(value = "是否通用监测链接")
     private Integer generalTrack;
-    /**深度转化出价*/
+    /**
+     * 深度转化出价
+     */
     @Excel(name = "深度转化出价", width = 15)
     @ApiModelProperty(value = "深度转化出价")
     private BigDecimal deepConversionBid;
-    /**是否创建程序化创意*/
+    /**
+     * 是否创建程序化创意
+     */
     @Excel(name = "是否创建程序化创意", width = 15)
     @ApiModelProperty(value = "是否创建程序化创意")
     private Integer openProgramCreate;
-    /**操作人*/
+    /**
+     * 操作人
+     */
     @Excel(name = "操作人", width = 15)
     @ApiModelProperty(value = "操作人")
     private String userId;
-    /**素材来源*/
+    /**
+     * 素材来源
+     */
     @Excel(name = "素材来源", width = 15)
     @ApiModelProperty(value = "素材来源")
     private Integer channelType;
-    /**计划日预算*/
+    /**
+     * 计划日预算
+     */
     @Excel(name = "计划日预算", width = 15)
     @ApiModelProperty(value = "计划日预算")
     private BigDecimal campaignDayBudget;
-    /**组日预算*/
+    /**
+     * 组日预算
+     */
     @Excel(name = "组日预算", width = 15)
     @ApiModelProperty(value = "组日预算")
     private BigDecimal unitDayBudget;
-    /**分日预算*/
+    /**
+     * 分日预算
+     */
     @Excel(name = "分日预算", width = 15)
     @ApiModelProperty(value = "分日预算")
     private String campaignDayBudgetSchedule;
-    /**自定义组数量*/
+    /**
+     * 自定义计划数量
+     */
+    @Excel(name = "自定义组数量", width = 15)
+    @ApiModelProperty(value = "自定义组数量")
+    private Integer customPlanCnt;
+    /**
+     * 自定义组数量
+     */
     @Excel(name = "自定义组数量", width = 15)
     @ApiModelProperty(value = "自定义组数量")
     private Integer customUnitCnt;
-    /**程序化数量*/
+    /**
+     * 程序化计划数量
+     */
+    @Excel(name = "程序化数量", width = 15)
+    @ApiModelProperty(value = "程序化数量")
+    private Integer programPlanCnt;
+    /**
+     * 程序化组数量
+     */
     @Excel(name = "程序化数量", width = 15)
     @ApiModelProperty(value = "程序化数量")
     private Integer programUnitCnt;
-    /**素材名称关键字*/
+    /**
+     * 素材名称关键字
+     */
     @Excel(name = "素材名称关键字", width = 15)
     @ApiModelProperty(value = "素材名称关键字")
     private String materialKeyword;
-    /**是否多应用多出价 0 否 1 是*/
+    /**
+     * 是否多应用多出价 0 否 1 是
+     */
     @Excel(name = "是否多应用多出价 0 否 1 是", width = 15)
     @ApiModelProperty(value = "是否多应用多出价 0 否 1 是")
     private Integer multipleBids;
-    /**渠道号使用层级*/
+    /**
+     * 渠道号使用层级
+     */
     @Excel(name = "渠道号使用层级", width = 15)
     @ApiModelProperty(value = "渠道号使用层级")
     private String usageLevel;
-    /**是否使用渠道号0不使用,1使用*/
+    /**
+     * 是否使用渠道号0不使用,1使用
+     */
     @Excel(name = "是否使用渠道号0不使用,1使用", width = 15)
     @ApiModelProperty(value = "是否使用渠道号0不使用,1使用")
     private Integer useChannel;
-    /**1 定向匹配。2素材匹配*/
+    /**
+     * 1 定向匹配。2素材匹配
+     */
     @Excel(name = "1 定向匹配。2素材匹配", width = 15)
     @ApiModelProperty(value = "1 定向匹配。2素材匹配")
     private Integer matchType;
-    /**本地定向集*/
+    /**
+     * 本地定向集
+     */
     @Excel(name = "本地定向集", width = 15)
     @ApiModelProperty(value = "本地定向集")
     private String autoTargetArray;
-    /**素材来源 1-上新素材,2-高质量素材,3-遗漏素材,4-历史打捞*/
+    /**
+     * 素材来源 1-上新素材,2-高质量素材,3-遗漏素材,4-历史打捞
+     */
     @Excel(name = "素材来源 1-上新素材,2-高质量素材,3-遗漏素材,4-历史打捞", width = 15)
     @ApiModelProperty(value = "素材来源 1-上新素材,2-高质量素材,3-遗漏素材,4-历史打捞")
     private String sourceMaterial;
-    /**创建时间*/
+    /**
+     * 创建时间
+     */
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
-    /**updateTime*/
+    /**
+     * updateTime
+     */
     @ApiModelProperty(value = "updateTime")
     private Date updateTime;
-    
+
     @TableField(exist = false)
     private String authName;
 }

+ 20 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/KuaiShouAppListController.java

@@ -229,4 +229,24 @@ public class KuaiShouAppListController {
         }
         return result;
     }
+
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "/queryByAppId")
+    public Result<KuaiShouAppList> queryByAppId(Long appId) {
+        Result<KuaiShouAppList> result = new Result<>();
+        KuaiShouAppList kuaiShouAppList = kuaiShouAppListService.getAppListByAppId(appId);
+        if (kuaiShouAppList == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(kuaiShouAppList);
+            result.setSuccess(true);
+        }
+        return result;
+    }
 }

+ 4 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaiShouAppList.java

@@ -82,6 +82,10 @@ public class KuaiShouAppList {
     @ApiModelProperty(value = "应用包名")
     private String packageName;
     /**
+     *app隐私政策链接
+     */
+    private String appPrivacyUrl;
+    /**
      * 应用类型 1: Android 应用下载,2: Android 网页游戏,3: iOS 应用下载, 4:iOS 网页游戏
      */
     @Excel(name = "应用类型 1: Android 应用下载,2: Android 网页游戏,3: iOS 应用下载, 4:iOS 网页游戏", width = 15)

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouAppListMapper.java

@@ -18,4 +18,6 @@ public interface KuaiShouAppListMapper extends BaseMapper<KuaiShouAppList> {
     void replaceBatch(@Param("addList") List<KuaiShouAppList> addList);
 
     List<KuaiShouAppList> getAppNames(@Param("appIds") JSONArray appIds);
+
+    KuaiShouAppList getAppListByAppId(@Param("appId") Long appId);
 }

+ 11 - 2
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouAppListMapper.xml

@@ -12,7 +12,8 @@
         image_token,
         package_name,
         platform,
-        return_time
+        return_time,
+        app_privacy_url
         )
         values
         <foreach collection="addList" item="appInfo" separator=",">
@@ -26,7 +27,8 @@
             #{appInfo.imageToken},
             #{appInfo.packageName},
             #{appInfo.platform},
-            #{appInfo.returnTime}
+            #{appInfo.returnTime},
+            #{appInfo.appPrivacyUrl}
             )
         </foreach>
     </insert>
@@ -41,4 +43,11 @@
         </foreach>
     </select>
 
+
+    <select id="getAppListByAppId" resultType="cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouAppList">
+        SELECT *
+        FROM ctop_kuaishou_app_list
+        WHERE app_id = #{appId}
+    </select>
+
 </mapper>

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouAppListService.java

@@ -19,4 +19,6 @@ public interface IKuaiShouAppListService extends IService<KuaiShouAppList> {
     List<KuaiShouAppList> getAppListByAccountId(Long accountId);
 
     List<KuaiShouAppList> getAppNames(JSONArray appIds);
+
+    KuaiShouAppList getAppListByAppId(Long appId);
 }

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouAppListServiceImpl.java

@@ -44,4 +44,9 @@ public class KuaiShouAppListServiceImpl extends ServiceImpl<KuaiShouAppListMappe
     public List<KuaiShouAppList> getAppNames(JSONArray appIds) {
         return shouAppListMapper.getAppNames(appIds);
     }
+
+    @Override
+    public KuaiShouAppList getAppListByAppId(Long appId) {
+        return shouAppListMapper.getAppListByAppId(appId);
+    }
 }

+ 1 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java

@@ -3182,6 +3182,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                             appList.setAppId(dataJson.getLong("app_id"));
                             appList.setAppVersion(dataJson.getString("app_version"));
                             appList.setAppName(dataJson.getString("app_name"));
+                            appList.setAppPrivacyUrl(dataJson.getString("app_privacy_url"));
                             appList.setAppIconUrl(dataJson.getString("app_icon_url"));
                             appList.setImageToken(dataJson.getString("image_token"));
                             appList.setPackageName(dataJson.getString("package_name"));

+ 15 - 11
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/controller/KuaishouChannelController.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.kuaishou.modules.channel.controller;
 
 import cn.com.ctop.common.module.service.ISysRoleExtService;
+import cn.com.ctop.common.module.service.ISysUserService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.ExportExcelUtils;
 import cn.com.ctop.kuaishou.modules.channel.entity.KuaishouChannel;
@@ -63,6 +64,8 @@ public class KuaishouChannelController {
     private IKuaishouChannelService kuaishouChannelService;
     @Autowired
     private ISysRoleExtService sysRoleService;
+    @Autowired
+    private ISysUserService sysUserService;
 
     /**
      * 查询渠道号管理首页数据
@@ -70,12 +73,15 @@ public class KuaishouChannelController {
     @GetMapping(value = "/channelManagementHome")
     public Result<Object> channelManagementHome(KuaishouChannel kuaishouChannel, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         try {
+
             String roleCode = sysRoleService.getRoleCodeByUserId(kuaishouChannel.getUserId());
-            if (Check.isNull(roleCode)) {
-                return Result.error("缺失 人员信息");
-            }
-            if ("admin".equals(roleCode) || roleCode.contains("sale") || "meidaManager".equals(roleCode)) {
-                kuaishouChannel.setUserId(null);
+
+            if (!Check.isNull(roleCode) && ("admin".equals(roleCode) || roleCode.contains("sale") || "meidaManager".equals(roleCode))) {
+                kuaishouChannel.setRids(null);
+            } else {
+                List<String> rids = new ArrayList<>();
+                sysUserService.getItsPersonnelIds(rids, kuaishouChannel.getUserId());
+                kuaishouChannel.setRids(rids);
             }
             PageHelper.startPage(pageNo, pageSize);
             return kuaishouChannelService.channelManagementHome(kuaishouChannel);
@@ -98,8 +104,6 @@ public class KuaishouChannelController {
             return kuaishouChannelService.channelNumberDetails(kuaishouChannel, pageNo, pageSize);
 
 
-
-
         } catch (Exception e) {
             e.printStackTrace();
             return Result.error("查询渠道号详情异常");
@@ -189,7 +193,7 @@ public class KuaishouChannelController {
     @GetMapping(value = "/updateChannels")
     public Result<Object> updateChannels(KuaishouChannel channel) {
         try {
-            if (Check.isNull(channel.getAccountId())||Check.isNull(channel.getUserId())) {
+            if (Check.isNull(channel.getAccountId()) || Check.isNull(channel.getUserId())) {
                 return Result.error("缺失参数");
             }
             return kuaishouChannelService.updateChannels(channel);
@@ -247,9 +251,9 @@ public class KuaishouChannelController {
             ids.add("hcst");//应用标记
             ids.add("http://test123.com.cn");//隐私政策链接
             ids.add("http://test123456.com.cn");//第三方点击监测链接
-            ids.add(1);//是否关联单品(0否,1是)
-            ids.add("剑来");//关联单品名称
-            ids.add("account");//使用层级(账户:account,计划:plan,组:group)
+            ids.add(0);//是否关联单品(0否,1是)
+            ids.add("");//关联单品名称
+            ids.add("plan");//使用层级(账户:account,计划:plan,组:group)
             ids.add(1);//是否循环(0否,1是)
             list.add(ids);
             eeu.exportExcelForAttendance(workbook, 0, "Sheet1", titles, list);

+ 3 - 4
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/entity/KuaishouChannel.java

@@ -87,10 +87,6 @@ public class KuaishouChannel {
      * 使用范围,1账户,2项目
      */
     private Integer usageRange;
-    /**
-     * 渠道号锁 0 不可用,1可用
-     */
-    private Integer channelLock;
 
     /**
      * 创建人
@@ -205,4 +201,7 @@ public class KuaishouChannel {
     @TableField(exist = false)
     private Long unitId;
 
+    @TableField(exist = false)
+    private  List<String> rids;
+
 }

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/entity/KuaishouChannelAppInfo.java

@@ -56,6 +56,11 @@ public class KuaishouChannelAppInfo {
      * 操作类型,add新增,update修改
      */
     private String type;
+
+    /**
+     * 创建类型,1新增,2,选择
+     */
+    private String appCreateType;
     /**
      * 应用包名
      */

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/entity/KuaishouChannelCreateStrategy.java

@@ -187,6 +187,11 @@ public class KuaishouChannelCreateStrategy {
     private String imageToken;
 
     /**
+     * 创建类型,1新增,2,选择
+     */
+    private String appCreateType;
+
+    /**
      * createTime
      */
     @ApiModelProperty(value = "createTime")

+ 1 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/mapper/KuaishouChannelMapper.java

@@ -42,7 +42,7 @@ public interface KuaishouChannelMapper extends BaseMapper<KuaishouChannel> {
 
     List<Integer> queryUsedLevel(@Param("strategys") List<KuaishouChannelCreateStrategy> strategys);
 
-    List<KuaishouChannel> queryChannelByHaveCycleTimes(@Param("haveCycleTimes") Integer haveCycleTimes, @Param("usageLevel") String usageLevel, @Param("strategys") List<KuaishouChannelCreateStrategy> strategys);
+    List<KuaishouChannel> queryChannelByUsageTimes(@Param("usageTimes") Integer usageTimes, @Param("usageLevel") String usageLevel, @Param("strategys") List<KuaishouChannelCreateStrategy> strategys, @Param("appName") String appName);
 
     List<JSONObject> queryItemsListByAccountId(@Param("accountId") Long accountId, @Param("appName") String appName);
 

+ 41 - 38
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/mapper/xml/KuaishouChannelMapper.xml

@@ -9,33 +9,37 @@
         IFNULL(t1.project_name, '')as 'projectName',
         IFNULL(t1.account_id, '')as 'accountId',
         IFNULL(t1.project_id, '')as 'projectId',
-        IFNULL(t2.realname, '')as 'realname',
         MAX(t1.state_date) as 'stateDate',
         IFNULL(t1.create_type, '') as 'createType',
         IFNULL(t1.state,0) as 'state',
         usage_level as 'usageLevel',
-        (select auth_name from ctop_user_allocation where account_id = t1.account_id) as 'authName',
+        t2.auth_name as 'authName',
+        (select realname from sys_user where id = t2.user_id) as 'realname',
         t1.create_time
         FROM ctop_kuaishou_channel t1
-        LEFT JOIN sys_user t2 ON t1.user_id = t2.id
+        LEFT JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
         <where>
-            <if test="userId != null">
-                and t1.user_id = #{userId}
+            <if test="rids != null">
+                AND t2.user_id IN
+                <foreach collection="rids" item="id" separator=","
+                         open="(" close=")">
+                    #{id}
+                </foreach>
             </if>
             <if test="projectId != null">
-                and project_id = #{projectId}
+                and t1.project_id = #{projectId}
             </if>
             <if test="productId != null">
-                and product_id = #{productId}
+                and t1.product_id = #{productId}
             </if>
             <if test="accountId != null">
-                and account_id= #{accountId}
+                and t1.account_id= #{accountId}
             </if>
             <if test="state != null">
-                and state= #{state}
+                and t1.state= #{state}
             </if>
         </where>
-        GROUP BY account_id
+        GROUP BY t1.account_id
         ORDER BY create_time DESC
     </select>
 
@@ -127,7 +131,6 @@
         FROM `ctop_kuaishou_channel`
         WHERE account_id = #{accountId}
           AND state = 1
-          AND usage_times &lt; cycle_times
           AND id > #{usedId}
           AND usage_range = #{usageRange}
         ORDER BY channel_code, channel_number limit 10
@@ -150,10 +153,10 @@
     </select>
 
     <select id="queryMaxChannelNumber" resultType="cn.com.ctop.kuaishou.modules.channel.entity.KuaishouChannel">
-        SELECT have_cycle_times, max(channel_number) as channel_number
+        SELECT usage_times, max(channel_number) as channel_number
         FROM `ctop_kuaishou_channel`
         where strategy_id = #{strategyId}
-        group by have_cycle_times
+        group by usage_times
     </select>
 
     <select id="queryUsedChannelNumber" resultType="java.lang.Integer">
@@ -169,7 +172,6 @@
                usage_range,
                usage_times,
                is_have_item,
-               cycle_times,
                channel_name,
                click_track_url,
                actionbar_click_url,
@@ -178,38 +180,39 @@
         WHERE account_id = #{accountId}
           and usage_level = #{usageLevel}
           AND state = 1
-          and channel_lock = 1
+          AND channel_state = 1
     </select>
 
-    <select id="queryChannelByHaveCycleTimes" resultType="cn.com.ctop.kuaishou.modules.channel.entity.KuaishouChannel">
-        SELECT id,
-        channel_code,
-        usage_level,
-        usage_range,
-        usage_times,
-        is_have_item,
-        cycle_times,
-        channel_name,
-        click_track_url,
-        actionbar_click_url,
-        schema_uri,
-        have_cycle_times
-        FROM `ctop_kuaishou_channel`
-        WHERE strategy_id IN
+    <select id="queryChannelByUsageTimes" resultType="cn.com.ctop.kuaishou.modules.channel.entity.KuaishouChannel">
+        SELECT t1.id,
+        t1.channel_code,
+        t1.usage_level,
+        t1.usage_range,
+        t1.usage_times,
+        t1.is_have_item,
+        t1.channel_name,
+        t1.click_track_url,
+        t1.actionbar_click_url,
+        t1.schema_uri
+        FROM `ctop_kuaishou_channel` t1
+        LEFT JOIN ctop_kuaishou_channel_app_info t2 ON t1.app_id = t2.app_id
+        WHERE t1.strategy_id IN
         <foreach collection="strategys" item="item" separator=","
                  open="(" close=")">
             #{item.id}
         </foreach>
-        AND have_cycle_times = #{haveCycleTimes}
-        AND state = 1
-        and usage_level = #{usageLevel}
-        and channel_lock = 1
-        ORDER BY usage_times,is_have_item Desc
+        AND t1.state = 1
+        AND t1.channel_state = 1
+        AND t2.app_name = #{appName}
+        AND t1.usage_times = #{usageTimes}
+        and t1.usage_level = #{usageLevel}
+        GROUP BY  t1.channel_code
+        ORDER BY t1.create_time,t1.channel_number
     </select>
 
 
     <select id="queryUsedLevel" resultType="java.lang.Integer">
-        SELECT have_cycle_times
+        SELECT usage_times
         FROM `ctop_kuaishou_channel`
         where strategy_id in
         <foreach collection="strategys" item="item" separator=","
@@ -217,7 +220,7 @@
             #{item.id}
         </foreach>
         AND state = 1
-        group by have_cycle_times
+        group by usage_times
     </select>
 
     <select id="queryItemsListByAccountId" resultType="com.alibaba.fastjson.JSONObject">
@@ -253,7 +256,7 @@
           t1.state = 1
         AND t1.account_id = #{accountId}
         AND t2.app_name = #{appName}
-        AND usage_times &lt; cycle_times
+
       ORDER BY
       t1.create_time DESC
   </select>

+ 31 - 44
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/channel/service/impl/KuaishouChannelServiceImpl.java

@@ -2,6 +2,7 @@ package cn.com.ctop.kuaishou.modules.channel.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.Product;
+import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.ProductMapper;
 import cn.com.ctop.common.module.mapper.ProjectMapper;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
@@ -710,17 +711,17 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
             channelStrategy.setChannelName(channelName);
         }
         String schemaUri = strategy.getSchemaUri();
-        if (!Check.isNull(schemaUri) && schemaUri.contains(CHANNEL_STR)) {
-            channelStrategy.setSchemaUri(schemaUri.replace(CHANNEL_STR, channelCode).trim());
+        if (!Check.isNull(schemaUri) && (schemaUri.contains(CHANNEL_STR) || schemaUri.contains(NUMBER_STR))) {
+            channelStrategy.setSchemaUri(schemaUri.replace(CHANNEL_STR, channelCode).replace(NUMBER_STR, numberStr).trim());
         }
-        if (!Check.isNull(strategy.getUrl()) && strategy.getUrl().contains(CHANNEL_STR)) {
-            channelStrategy.setUrl(strategy.getUrl().replace(CHANNEL_STR, channelCode).trim());
+        if (!Check.isNull(strategy.getUrl()) && (strategy.getUrl().contains(CHANNEL_STR) || strategy.getUrl().contains(NUMBER_STR))) {
+            channelStrategy.setUrl(strategy.getUrl().replace(CHANNEL_STR, channelCode).replace(NUMBER_STR, numberStr).trim());
         }
-        if (!Check.isNull(strategy.getActionbarClickUrl()) && strategy.getActionbarClickUrl().contains(CHANNEL_STR)) {
-            channelStrategy.setActionbarClickUrl(strategy.getActionbarClickUrl().replace(CHANNEL_STR, channelCode).trim());
+        if (!Check.isNull(strategy.getActionbarClickUrl()) && (strategy.getActionbarClickUrl().contains(CHANNEL_STR) || strategy.getActionbarClickUrl().contains(NUMBER_STR))) {
+            channelStrategy.setActionbarClickUrl(strategy.getActionbarClickUrl().replace(CHANNEL_STR, channelCode).replace(NUMBER_STR, numberStr).trim());
         }
-        if (strategy.getClickTrackUrl().contains(CHANNEL_STR)) {
-            channelStrategy.setClickTrackUrl(strategy.getClickTrackUrl().replace(CHANNEL_STR, channelCode).trim());
+        if (!Check.isNull(strategy.getClickTrackUrl()) && (strategy.getClickTrackUrl().contains(CHANNEL_STR) || strategy.getClickTrackUrl().contains(NUMBER_STR))) {
+            channelStrategy.setClickTrackUrl(strategy.getClickTrackUrl().replace(CHANNEL_STR, channelCode).replace(NUMBER_STR, numberStr).trim());
         }
         String appVersion = strategy.getAppVersion();
         if (appVersion.contains(CHANNEL_STR)) {
@@ -851,10 +852,6 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                 if (Check.isNull(isCycleTimes)) {
                     return Result.error("解析数据失败,文档中第" + (i + 1) + "行,是否循环列缺失数据");
                 }
-                String cycleTimes = eeu.getCellValue(row.getCell(17));
-                if (Check.isNull(cycleTimes)) {
-                    return Result.error("解析数据失败,文档中第" + (i + 1) + "行,循环次数列缺失数据");
-                }
                 //调起链接
                 String schemaUri = eeu.getCellValue(row.getCell(18));
                 //第三方actionBar监测链接
@@ -877,7 +874,6 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                 obj.put("itemName", itemName);
                 obj.put("usageLevel", usageLevel.toLowerCase());
                 obj.put("isCycle", isCycleTimes);
-                obj.put("cycleTimes", cycleTimes);
                 obj.put("schemaUri", schemaUri);
                 obj.put("actionbarClickUrl", actionbarClickUrl);
                 obj.put("md5", md5);
@@ -909,6 +905,13 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
         try {
             KuaishouChannelCreateStrategy strategy = JSONObject.parseObject(request.toJSONString(), KuaishouChannelCreateStrategy.class);
             if (!Check.isNull(strategy)) {
+                QueryWrapper<UserAllocation> usqueryWrapper = new QueryWrapper<>();
+                usqueryWrapper.eq("account_id", strategy.getAccountId());
+                usqueryWrapper.eq("project_id", strategy.getProjectId());
+                UserAllocation userAllocation = userAllocationService.getOne(usqueryWrapper);
+                if (Check.isNull(userAllocation)) {
+                    return Result.error("账户和项目不匹配");
+                }
                 JSONObject obj = projectMapper.getProduct(strategy.getAccountId(), strategy.getProjectId());
                 if (!Check.isNull(obj)) {
                     strategy.setProjectId(obj.getLong("projectId"));
@@ -926,7 +929,7 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                 KuaishouChannelCreateStrategy one = channelCreateStrategyService.getOne(queryWrapper);
                 if (!Check.isNull(one)) {
                     if (!one.getUsageLevel().equals(strategy.getUsageLevel())) {
-                        return Result.error("创建失败,使用层级字段与原有策略不一致");
+                        return Result.error("创建失败,使用层级字段与原有策略不一致");
                     }
                     //验证渠道号命名唯一
                     if (!checkChannelCode(strategy)) {
@@ -958,8 +961,7 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
     }
 
     @Override
-    public Result<Object> queryChannel(Long accountId, String level, String appName, String photoName) throws
-            Exception {
+    public Result<Object> queryChannel(Long accountId, String level, String appName, String photoName) throws Exception {
         //查询账户策略
         List<KuaishouChannelCreateStrategy> strategys = channelCreateStrategyService.queryChannelStrategyByAccountId(accountId);
         if (Check.isNull(strategys) || strategys.isEmpty()) {
@@ -1033,7 +1035,6 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
             KuaishouChannel one = this.getOne(queryWrapper);
             if (!Check.isNull(one)) {
                 one.setUpdateTime(new Date());
-                one.setChannelLock(1);
                 if (0 == state) {
                     this.saveOrUpdate(one);
                 } else {
@@ -1106,7 +1107,8 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                     kuaishouChannel.setSchemaUri(schemaUri.replace(CHANNEL_STR, kuaishouChannel.getChannelCode()));
                     list.add(kuaishouChannel);
                 }
-            } else if (!Check.isNull(clickTrackUrl) && clickTrackUrl.contains(CHANNEL_STR)) {
+            }
+            if (!Check.isNull(clickTrackUrl) && clickTrackUrl.contains(CHANNEL_STR)) {
                 boolean flag = list.size() > 0;
                 for (int i = 0; i < oldList.size(); i++) {
                     String channelCode = oldList.get(i).getChannelCode();
@@ -1118,7 +1120,8 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                         list.add(kuaishouChannel);
                     }
                 }
-            } else if (!Check.isNull(actionbarClickUrl) && actionbarClickUrl.contains(CHANNEL_STR)) {
+            }
+            if (!Check.isNull(actionbarClickUrl) && actionbarClickUrl.contains(CHANNEL_STR)) {
                 boolean flag = list.size() > 0;
                 for (int i = 0; i < oldList.size(); i++) {
                     String channelCode = oldList.get(i).getChannelCode();
@@ -1220,24 +1223,20 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
     }
 
     //通过账户范围计划层级查询
-    private Result<Object> doPlanLevel(Long accountId, List<KuaishouChannelCreateStrategy> strategys, String
-            appName, int count) throws
+    private Result<Object> doPlanLevel(Long accountId, List<KuaishouChannelCreateStrategy> strategys, String appName, int count) throws
             Exception {
-        List<Integer> haveCycleTimesList = channelMapper.queryUsedLevel(strategys);
-        if (Check.isNull(haveCycleTimesList)) {
+        List<Integer> usageTimesTypes = channelMapper.queryUsedLevel(strategys);
+        if (Check.isNull(usageTimesTypes)) {
             return Result.error("渠道号已无效");
         }
-        for (Integer haveCycleTimes : haveCycleTimesList) {
+        for (Integer usageTimes : usageTimesTypes) {
             //获取可用渠道号,筛查出一个返回给前端
-            List<KuaishouChannel> list = channelMapper.queryChannelByHaveCycleTimes(haveCycleTimes, "plan", strategys);
+            List<KuaishouChannel> list = channelMapper.queryChannelByUsageTimes(usageTimes, "plan", strategys,appName);
             if (Check.isNull(list)) {
                 continue;
             }
             for (KuaishouChannel channel : list) {
-//                Integer cycleTimes = channel.getCycleTimes();//可循环次数
-                Integer usageTimes = channel.getUsageTimes();//使用次数
-                //优先判断已经循环的次数 大于 使用次数
-                if (haveCycleTimes > usageTimes) {
+                //1 关联单品,无单品则跳过
                     if (channel.getIsHaveItem() == 1) {
                         List<KuaishouChannelItems> items = channelItemsRelService.queryItems(channel.getId());
                         if (Check.isNull(items) || items.isEmpty()) {
@@ -1245,7 +1244,7 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                         }
                         channel.setItems(items);
                     }
-                    // 符合条件,获取该渠道号
+                    // 获取绑定应用的渠道号
                     KuaishouChannelRel channelRel = channelRelService.queryByAccountChannelCode(channel.getChannelCode(), accountId, appName);
                     if (Check.isNull(channelRel)) {
                         continue;
@@ -1258,25 +1257,15 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                         } else {
                             channelRel.setAppId(channel.getAppId());
                             channelRelService.saveOrUpdate(channelRel);
-                            channel.setChannelLock(0);
                             this.saveOrUpdate(channel);
                             return Result.ok(channel);
                         }
                     } else {
-                        channel.setChannelLock(0);
                         this.saveOrUpdate(channel);
                         channel.setAppId(channelRel.getAppId());
                         return Result.ok(channel);
                     }
-                } else {
-                    //判断可循环次数 大于 已经循环的次数
-//                    if (cycleTimes > haveCycleTimes) {
-//                        //已循环次数+1
-//                        channel.setHaveCycleTimes(haveCycleTimes + 1);
-//                        this.saveOrUpdate(channel);
-//                    }
-                    continue;
-                }
+
             }
         }
         if (count == 0) {
@@ -1293,7 +1282,7 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
             return Result.error("渠道号已无效");
         }
         for (Integer haveCycleTimes : haveCycleTimesList) {
-            List<KuaishouChannel> list = channelMapper.queryChannelByHaveCycleTimes(haveCycleTimes, "group", strategys);
+            List<KuaishouChannel> list = channelMapper.queryChannelByUsageTimes(haveCycleTimes, "group", strategys,appName);
             if (Check.isNull(list)) {
                 continue;
             }
@@ -1327,12 +1316,10 @@ public class KuaishouChannelServiceImpl extends ServiceImpl<KuaishouChannelMappe
                         } else {
                             channelRel.setAppId(channel.getAppId());
                             channelRelService.saveOrUpdate(channelRel);
-                            channel.setChannelLock(0);
                             this.saveOrUpdate(channel);
                             return Result.ok(channel);
                         }
                     } else {
-                        channel.setChannelLock(0);
                         this.saveOrUpdate(channel);
                         channel.setAppId(channelRel.getAppId());
                         return Result.ok(channel);

+ 2 - 2
jeecg-cloud-module/jeecg-cloud-system-start/src/main/resources/application-test.yml

@@ -261,8 +261,8 @@ bytedance:
     advertiser-fund-daily-stat: /2/advertiser/fund/daily_stat/
 ai:
   callback:
-    callback-unit-url: http://139.186.165.84:31012/ai_callback_add_group
-    callback-creative-url: http://139.186.165.84:31012/ai_callback_add_creative
+    callback-unit-url: http://192.168.0.195:31012/ai_callback_add_group
+    callback-creative-url: http://192.168.0.195:31012/ai_callback_add_creative
 xxl-job:
   requestUrl: http://jiaoyangapi.shyouteng.com.cn