Quellcode durchsuchen

feat:看所有数据

pudongliang vor 4 Monaten
Ursprung
Commit
3de19816e6

+ 312 - 0
.qoder/skills/git-commit-push/SKILL.md

@@ -0,0 +1,312 @@
+---
+name: git-commit-push
+description: Git 提交和推送命令速查手册。提供暂存、提交、推送、修改提交、撤销、stash 等常用命令和场景示例。需要手动调用,使用 /git-commit-push 触发。
+---
+
+# Git 提交和推送命令速查
+
+## 基本提交流程
+
+### 1. 查看状态
+```bash
+# 查看工作区状态
+git status
+
+# 查看具体改动
+git diff
+
+# 查看已暂存的改动
+git diff --cached
+```
+
+### 2. 暂存文件
+```bash
+# 暂存所有修改
+git add .
+
+# 暂存指定文件
+git add <文件路径>
+
+# 暂存指定目录
+git add <目录路径>
+
+# 交互式暂存(选择性暂存)
+git add -p
+```
+
+### 3. 提交
+```bash
+# 提交并写提交信息
+git commit -m "提交信息"
+
+# 打开编辑器写详细提交信息
+git commit
+
+# 暂存并提交(跳过 git add)
+git commit -am "提交信息"
+```
+
+## 推送到远程
+
+### 基本推送
+```bash
+# 推送到当前分支的远程分支
+git push
+
+# 推送到指定远程仓库的指定分支
+git push origin main
+
+# 首次推送并设置上游分支
+git push -u origin <分支名>
+
+# 强制推送(谨慎使用!)
+git push -f
+git push --force-with-lease  # 更安全的强制推送
+```
+
+### 推送标签
+```bash
+# 推送指定标签
+git push origin <标签名>
+
+# 推送所有标签
+git push --tags
+```
+
+## 修改提交
+
+### 修改最后一次提交
+```bash
+# 修改提交信息
+git commit --amend -m "新的提交信息"
+
+# 添加遗漏的文件到最后一次提交
+git add <遗漏的文件>
+git commit --amend --no-edit
+
+# 修改提交信息和内容
+git commit --amend
+```
+
+### 修改后推送
+```bash
+# 如果已经推送过,需要强制推送
+git push --force-with-lease
+```
+
+## 撤销操作
+
+### 撤销暂存
+```bash
+# 撤销所有暂存
+git reset HEAD
+
+# 撤销指定文件的暂存
+git reset HEAD <文件路径>
+
+# 或使用 restore(推荐)
+git restore --staged <文件路径>
+```
+
+### 撤销工作区修改
+```bash
+# 撤销指定文件的修改
+git checkout -- <文件路径>
+
+# 或使用 restore(推荐)
+git restore <文件路径>
+
+# 撤销所有未暂存的修改
+git checkout .
+```
+
+### 撤销提交
+```bash
+# 撤销最后一次提交,保留修改
+git reset --soft HEAD~1
+
+# 撤销最后一次提交,取消暂存但保留修改
+git reset HEAD~1
+
+# 撤销最后一次提交,丢弃所有修改(危险!)
+git reset --hard HEAD~1
+
+# 撤销最近 N 次提交
+git reset --soft HEAD~N
+```
+
+## 暂存工作进度 (Stash)
+
+### 基本用法
+```bash
+# 暂存当前修改
+git stash
+
+# 暂存并添加说明
+git stash save "暂存说明"
+
+# 暂存包括未跟踪的文件
+git stash -u
+
+# 查看暂存列表
+git stash list
+
+# 恢复最近的暂存
+git stash pop
+
+# 恢复指定的暂存
+git stash apply stash@{0}
+
+# 删除暂存
+git stash drop stash@{0}
+
+# 清空所有暂存
+git stash clear
+```
+
+## 查看提交历史
+
+```bash
+# 查看提交历史
+git log
+
+# 简洁的单行显示
+git log --oneline
+
+# 查看最近 N 次提交
+git log -n 5
+
+# 查看图形化分支历史
+git log --graph --oneline --all
+
+# 查看指定文件的提交历史
+git log <文件路径>
+
+# 查看指定作者的提交
+git log --author="作者名"
+```
+
+## 常见场景
+
+### 场景 1: 提交代码并推送
+```bash
+git add .
+git commit -m "feat: 添加新功能"
+git push
+```
+
+### 场景 2: 修改刚才的提交信息
+```bash
+git commit --amend -m "新的提交信息"
+git push --force-with-lease
+```
+
+### 场景 3: 临时切换分支
+```bash
+# 暂存当前工作
+git stash
+
+# 切换分支处理其他事情
+git checkout other-branch
+
+# 切回来恢复工作
+git checkout original-branch
+git stash pop
+```
+
+### 场景 4: 提交了错误的代码,需要撤回
+```bash
+# 撤销提交但保留修改
+git reset --soft HEAD~1
+
+# 修改代码
+# ...
+
+# 重新提交
+git add .
+git commit -m "正确的提交"
+```
+
+### 场景 5: 已经推送,但需要撤回最后一次提交
+```bash
+# 撤销提交
+git reset --hard HEAD~1
+
+# 强制推送(谨慎!)
+git push --force-with-lease
+```
+
+### 场景 6: 解决 git pull 冲突
+```bash
+# 查看冲突文件
+git status
+
+# 手动编辑解决冲突,或选择使用某一方的版本
+git checkout --ours <文件>   # 使用本地版本
+git checkout --theirs <文件>  # 使用远程版本
+
+# 标记为已解决
+git add <文件>
+
+# 完成合并
+git commit -m "解决合并冲突"
+
+# 或者放弃本次合并
+git merge --abort
+```
+
+## 提交信息规范
+
+建议使用语义化提交信息格式:
+
+```
+<类型>(<范围>): <简短描述>
+
+<详细描述>
+
+<关联信息>
+```
+
+**常用类型:**
+- `feat`: 新功能
+- `fix`: 修复 bug
+- `docs`: 文档修改
+- `style`: 代码格式调整(不影响功能)
+- `refactor`: 重构(既不是新功能也不是修复)
+- `perf`: 性能优化
+- `test`: 测试相关
+- `chore`: 构建、工具或配置修改
+
+**示例:**
+```bash
+git commit -m "feat(账号组): 添加批量删除功能"
+git commit -m "fix(广告计划): 修复创建时的参数校验问题"
+git commit -m "refactor(utils): 优化水印添加工具类"
+```
+
+## 安全建议
+
+1. **推送前检查**: 使用 `git log` 和 `git diff` 确认要推送的内容
+2. **避免强制推送**: 尽量不使用 `-f`,使用 `--force-with-lease` 更安全
+3. **敏感信息**: 确保不提交密码、密钥等敏感信息
+4. **提交前测试**: 确保代码可以编译和运行
+5. **小步提交**: 每次提交只包含一个逻辑修改,便于回滚和审查
+
+## 配置优化
+
+```bash
+# 设置默认编辑器
+git config --global core.editor "vim"
+
+# 设置提交模板
+git config --global commit.template ~/.gitmessage
+
+# 显示中文文件名
+git config --global core.quotepath false
+
+# 设置默认推送行为
+git config --global push.default current
+
+# 设置 pull 默认使用 merge
+git config --global pull.rebase false
+```

+ 0 - 1
src/main/java/com/moka/gdtauto/controller/AccountGroupController.java

@@ -135,7 +135,6 @@ public class AccountGroupController {
             @AuthUser SysUser sysUser) {
         try {
             List<AccountGroup> accountGroups = accountGroupService.lambdaQuery()
-                    .eq(AccountGroup::getUserId, sysUser.getId())
                     .list();
             return Result.success(accountGroups, "查询成功");
         } catch (Exception e) {

+ 23 - 32
src/main/java/com/moka/gdtauto/controller/AdPlanConfController.java

@@ -14,7 +14,6 @@ import com.moka.gdtauto.entity.AdPlan;
 import com.moka.gdtauto.entity.AdPlanCreative;
 import com.moka.gdtauto.service.SysUserService;
 
-
 import com.moka.gdtauto.mapper.AccountGroupAccountRelationshipMapper;
 import com.moka.gdtauto.service.AccountGroupService;
 import com.moka.gdtauto.service.AdPlanConfService;
@@ -63,8 +62,8 @@ public class AdPlanConfController {
                             .eq(AccountGroupAccountRelationship::getGroupId, request.getAccountGroupId()));
 
             List<AdPlan> plans = buildPlans(request, accountGroup, relationships);
-            
-            return Result.success(plans,"重新创建广告计划配置成功");
+
+            return Result.success(plans, "重新创建广告计划配置成功");
         } catch (Exception e) {
             log.error("重新创建广告计划配置失败", e);
             return Result.fail("重新创建广告计划配置失败: " + e.getMessage());
@@ -79,11 +78,11 @@ public class AdPlanConfController {
         String creativeFileNames = request.getCreativeFileNames();
         String[] creativeUrlArray = creativeFileUrls.split(",");
         String[] creativeNameArray = creativeFileNames != null ? creativeFileNames.split(",") : new String[0];
-        List<AdPlan>  plans = new ArrayList<>();
-         int i = 0;
+        List<AdPlan> plans = new ArrayList<>();
+        int i = 0;
         for (AccountGroupAccountRelationship relationship : relationships) {
             Long accountId = relationship.getAccountId();
-            
+
             String targets = request.getTargets();
             String sites = request.getSites();
 
@@ -110,9 +109,10 @@ public class AdPlanConfController {
                     adPlan.setAdCreatives(adPlanCreatives);
                     int j = 0;
                     for (String creativeUrl : creativeUrlArray) {
-                        String fileName = (j < creativeNameArray.length && creativeNameArray[j] != null && !creativeNameArray[j].isEmpty()) 
-                            ? creativeNameArray[j] 
-                            : creativeUrl.substring(creativeUrl.lastIndexOf("/") + 1);
+                        String fileName = (j < creativeNameArray.length && creativeNameArray[j] != null
+                                && !creativeNameArray[j].isEmpty())
+                                        ? creativeNameArray[j]
+                                        : creativeUrl.substring(creativeUrl.lastIndexOf("/") + 1);
                         String creativeName = accountGroupName.trim() + "-" + dateTime + "-" + j + "-" + fileName;
                         AdPlanCreative adPlanCreative = new AdPlanCreative();
                         adPlanCreative.setCreativeFileUrl(creativeUrl);
@@ -137,36 +137,35 @@ public class AdPlanConfController {
     public Result<AdPlanConf> generatePlan(
             @RequestBody UpdateAdPlanConfRequest request,
             @AuthUser SysUser sysUser) {
-        
+
         SysUser user = sysUserService.getById(sysUser.getId());
         LocalDateTime userTokenExpiresAt = user.getUserTokenExpiresAt();
-        if (userTokenExpiresAt == null || userTokenExpiresAt.isBefore(LocalDateTime.now())) {   
+        if (userTokenExpiresAt == null || userTokenExpiresAt.isBefore(LocalDateTime.now())) {
             return Result.fail("实名认证已过期");
         }
-        
+
         try {
             AccountGroup accountGroup = accountGroupService.getById(request.getAccountGroupId());
             List<AccountGroupAccountRelationship> relationships = relationshipMapper.selectList(
                     new LambdaQueryWrapper<AccountGroupAccountRelationship>()
                             .eq(AccountGroupAccountRelationship::getGroupId, request.getAccountGroupId()));
-                            Long confId = request.getId();
+            Long confId = request.getId();
             AdPlanConf adPlanConf = new AdPlanConf();
             if (confId == null) {
                 BeanUtils.copyProperties(request, adPlanConf);
                 adPlanConf.setUserId(sysUser.getId());
                 adPlanConf.setJobNumber(sysUser.getJobNumber());
+                adPlanConf.setCreator(sysUser.getName());
                 confId = adPlanConfService.createAdPlanConf(adPlanConf);
             } else {
                 BeanUtils.copyProperties(request, adPlanConf);
-                adPlanConf.setUserId(sysUser.getId());
-                adPlanConf.setJobNumber(sysUser.getJobNumber());
                 adPlanConfService.updateAdPlanConf(adPlanConf);
             }
             List<AdPlan> plans = buildPlans(request, accountGroup, relationships);
-            
+
             adPlanConfService.generatePlan(plans);
 
-            //异步对接腾讯接口
+            // 异步对接腾讯接口
             adPlanConfService.asyncTencentInterface(plans);
 
             return Result.success(adPlanConf, "创建广告计划成功;异步执行接口对接中");
@@ -176,18 +175,16 @@ public class AdPlanConfController {
         }
     }
 
-
     @GetMapping("/reGeneratePlan/{id}")
     public Result<Void> reGeneratePlan(@PathVariable Long id, @AuthUser SysUser sysUser) {
         SysUser user = sysUserService.getById(sysUser.getId());
         LocalDateTime userTokenExpiresAt = user.getUserTokenExpiresAt();
-        if (userTokenExpiresAt == null || userTokenExpiresAt.isBefore(LocalDateTime.now())) {   
+        if (userTokenExpiresAt == null || userTokenExpiresAt.isBefore(LocalDateTime.now())) {
             return Result.fail("实名认证已过期");
         }
         adPlanConfService.asyncReGeneratePlan(id);
         return Result.success("重新生成广告计划执行中");
     }
-    
 
     /**
      * 创建广告计划配置
@@ -202,7 +199,8 @@ public class AdPlanConfController {
             BeanUtils.copyProperties(request, adPlanConf);
             adPlanConf.setUserId(sysUser.getId());
             adPlanConf.setJobNumber(sysUser.getJobNumber());
-            
+            adPlanConf.setCreator(sysUser.getName());
+
             Long confId = adPlanConfService.createAdPlanConf(adPlanConf);
             return Result.success(confId, "创建广告计划配置成功");
         } catch (Exception e) {
@@ -222,9 +220,6 @@ public class AdPlanConfController {
         try {
             AdPlanConf adPlanConf = new AdPlanConf();
             BeanUtils.copyProperties(request, adPlanConf);
-            adPlanConf.setUserId(sysUser.getId());
-            adPlanConf.setJobNumber(sysUser.getJobNumber());
-            
             boolean success = adPlanConfService.updateAdPlanConf(adPlanConf);
             if (success) {
                 return Result.success("更新广告计划配置成功");
@@ -243,8 +238,7 @@ public class AdPlanConfController {
     @Operation(summary = "删除广告计划配置", description = "删除指定的广告计划配置")
     @DeleteMapping("/{confId}")
     public Result<Void> deleteAdPlanConf(
-            @Parameter(description = "配置ID", required = true)
-            @PathVariable Long confId,
+            @Parameter(description = "配置ID", required = true) @PathVariable Long confId,
             @AuthUser SysUser sysUser) {
         try {
             boolean success = adPlanConfService.deleteAdPlanConf(confId, sysUser.getId());
@@ -265,10 +259,8 @@ public class AdPlanConfController {
     @Operation(summary = "获取广告计划配置列表", description = "分页获取当前用户的所有广告计划配置")
     @GetMapping("/list")
     public Result<Page<AdPlanConf>> getAdPlanConfs(
-            @Parameter(description = "页码", example = "1")
-            @RequestParam(defaultValue = "1") Integer pageNum,
-            @Parameter(description = "每页大小", example = "10")
-            @RequestParam(defaultValue = "10") Integer pageSize,
+            @Parameter(description = "页码", example = "1") @RequestParam(defaultValue = "1") Integer pageNum,
+            @Parameter(description = "每页大小", example = "10") @RequestParam(defaultValue = "10") Integer pageSize,
             @AuthUser SysUser sysUser) {
         try {
             Page<AdPlanConf> page = adPlanConfService.getUserAdPlanConfs(
@@ -286,8 +278,7 @@ public class AdPlanConfController {
     @Operation(summary = "获取广告计划配置详情", description = "根据ID获取广告计划配置详细信息")
     @GetMapping("/{confId}")
     public Result<AdPlanConf> getAdPlanConf(
-            @Parameter(description = "配置ID", required = true)
-            @PathVariable Long confId,
+            @Parameter(description = "配置ID", required = true) @PathVariable Long confId,
             @AuthUser SysUser sysUser) {
         try {
             AdPlanConf adPlanConf = adPlanConfService.getAdPlanConfById(confId, sysUser.getId());

+ 5 - 0
src/main/java/com/moka/gdtauto/entity/AdPlanConf.java

@@ -124,6 +124,11 @@ public class AdPlanConf {
     private String jobNumber;
 
     /**
+     * 创建人
+     */
+    private String creator;
+
+    /**
      * 创建时间
      */
     private LocalDateTime createTime;

+ 1 - 2
src/main/java/com/moka/gdtauto/service/impl/AccountGroupServiceImpl.java

@@ -177,8 +177,7 @@ public class AccountGroupServiceImpl extends ServiceImpl<AccountGroupMapper, Acc
         Page<AccountGroup> page = new Page<>(pageNum, pageSize);
         
         LambdaQueryWrapper<AccountGroup> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(AccountGroup::getUserId, userId)
-                .eq(AccountGroup::getDeleted, 0)
+        queryWrapper.eq(AccountGroup::getDeleted, 0)
                 .orderByDesc(AccountGroup::getCreateTime);
         
         return this.page(page, queryWrapper);

+ 1 - 4
src/main/java/com/moka/gdtauto/service/impl/AdPlanConfServiceImpl.java

@@ -88,7 +88,6 @@ public class AdPlanConfServiceImpl extends ServiceImpl<AdPlanConfMapper, AdPlanC
     public boolean updateAdPlanConf(AdPlanConf adPlanConf) {
         AdPlanConf existingConf = this.getOne(new LambdaQueryWrapper<AdPlanConf>()
                 .eq(AdPlanConf::getId, adPlanConf.getId())
-                .eq(AdPlanConf::getUserId, adPlanConf.getUserId())
                 .eq(AdPlanConf::getDeleted, 0));
         
         if (existingConf == null) {
@@ -129,8 +128,7 @@ public class AdPlanConfServiceImpl extends ServiceImpl<AdPlanConfMapper, AdPlanC
         Page<AdPlanConf> page = new Page<>(pageNum, pageSize);
         
         LambdaQueryWrapper<AdPlanConf> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(AdPlanConf::getUserId, userId)
-                .eq(AdPlanConf::getDeleted, 0)
+        queryWrapper.eq(AdPlanConf::getDeleted, 0)
                 .orderByDesc(AdPlanConf::getCreateTime);
         
         return this.page(page, queryWrapper);
@@ -140,7 +138,6 @@ public class AdPlanConfServiceImpl extends ServiceImpl<AdPlanConfMapper, AdPlanC
     public AdPlanConf getAdPlanConfById(Long confId, Long userId) {
         return this.getOne(new LambdaQueryWrapper<AdPlanConf>()
                 .eq(AdPlanConf::getId, confId)
-                .eq(AdPlanConf::getUserId, userId)
                 .eq(AdPlanConf::getDeleted, 0));
     }