美文网首页
实习生活记录——SINCE2019-05-14

实习生活记录——SINCE2019-05-14

作者: ElfACCC | 来源:发表于2019-05-17 16:13 被阅读0次

2019-05-14 DAY17

明天周三要上课,可以休息又是一天的新动力。!
今天要完成,点击一个node,实现搜索对应的文件信息的功能。
问题:树形控件 不能懒加载 把data改一下,在原来的entity里面加个属性children;
后台接受一个数组。

2019-05-16 DAY18

今天周四emmm,昨天姐姐诶给我发了工资嘻嘻嘻。今天希望能解决剩下的问题。就是上面的。

then() 只有在Promise对象中才有。

then()方法是异步执行。
意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题。
语法:promise.then(onCompleted, onRejected);
参数
必需。(promise)
Promise 对象。
必需。(onCompleted)
承诺成功完成时要运行的履行处理程序函数。
可选。(onRejected)
承诺被拒绝时要运行的错误处理程序函数。

报错:Cannot read property 'forEach' of undefined

  //加载表格内容
  if (res != null && res.code == '0000' && res.data != null) {
    let ret =[];
    res.data.list.forEach(el => {
      const item: any = {};
      item.studentCode = el.studentCode;
      item.studentName = el.studentName;
      item.studentScore = el.studentScore;
   }

这个就是遍历数据的一个方法。
解决办法就是在遍历之前,先判断是否存在

if (!res.data.list){
      return;
    }
我成功了155555555555555551

2019-05-17 DAY19

今天周五嘻嘻嘻嘻,就总结一下这个项目,并且尝试修改一下再改几个不安全的地方。


成果图

数据库的设计:number在后端另外实现排序,id是auto_createment

image.png image.png

实现每个level下number的递增:

count出有多少相同parentId的条数,最后再加个一就是它的number
xml里:

   <select id="countByParentId" resultType="Integer">
      select count(*) from project_management where
      <if test="_parameter!=null">
         parent_id = #{_parameter}
      </if>
    </select>

############service里:

  public int countByParentId(int pid){
            return projectManagementMapper.countByParentId(pid) + 1;
    }

查着查着发现一个问题,首先,setNumber好像被我删了,然后不能updateByUrl,因为每次上传的文件相同,但是url是不同的。


image.png
一个一个解决:setNumber写在这里。

controller:在/save里面

pm.setNumber(projectManagementService.countByParentId(form.getValue("parentId")));//setNumber
文件name相同修改文件名的做法,后面加上(1)(2)(3)

在xml,修改sql语句。


完成后
贴代码不太明显,还是截图好了

完整的/save的java:如果当前parentid下的没有该name,就直接add,如果有,就重命名,这里不考虑文件相同,url不同的状态。

  @PostMapping("/query")
@ResponseBody
Object selectAll(@RequestBody DynamicBean form) {
    Pager pager = new Pager(form);
    DynamicBean bean = new DynamicBean();
    List<Integer> ll = new ArrayList<>(form.getValue("ids"));
    List<ProjectManagement> list = new ArrayList<>();
    String formName = form.getString("name");
    Map<String, Object> map = new HashMap<String, Object>(2);
    map.put("name", formName);
    map.put("ids", ll);
    System.out.println(map);

    if (ll.size() != 0) {
        if (formName != "") {
            List<ProjectManagement> list2 = projectManagementService.selectByNameAndIds(map);
            for (ProjectManagement j : list2) {
                list.add(j);
            }
        } else {
            for (int i : ll) {
                list.add(projectManagementService.selectById(i));
            }
        }
    } else {
        if (formName != "") {
            List<ProjectManagement> list2 = projectManagementService.selectByName(formName);
            for (ProjectManagement j : list2) {
                list.add(j);
            }
        } else {
            list = projectManagementService.selectAll();
        }
    }

    bean.put("list", list);
    bean.put("pager", pager);
    return ApiResult.build(bean);
}

接下来解决选中目录后,搜索name出现未选中文件信息的问题

问题
完成后

在mybatis里传入了一个map,注意id in 某个list的写法。ids是map中list的key值。 image.png

controller里这么写: image.png

java中判断list是否为空的用法

1、如果想判断list是否为空,可以这么判断:
if(null == list || list.size() ==0 ){
  //为空的情况
}else{
  //不为空的情况
}
2、list.isEmpty() 和 list.size()==0 有啥区别呢**
案:没有区别 。**isEmpty()判断有没有元素,而size()返回有几个元素, 如果判断一个集合有无元素 建议用isEmpty()方法.比较符合逻辑用法。
3、list!=null 跟 ! list.isEmpty()有什么区别?
这就相当与,你要要到商店买东西
list!=null 首先判断是否有商店
!list.isEmpty() 没有判断商店是否存在,而是判断商店是否有东西
总结用法:如果连商店都没有,何来的的东西可卖
所以一般的判断是
if(list!=null && !list.isEmpty()){
   //不为空的情况
}else{
   //为空的情况
}

接下来。。回忆用elementui的树形控件和怎么把后台的数据变成他这个格式的。
首先贴一段文档: image.png
 <el-tree
:data="data"
show-checkbox
default-expand-all
node-key="id"
ref="tree"
highlight-current
:props="defaultProps">
</el-tree>
<div class="buttons">
<el-button @click="getCheckedNodes">通过 node 获取</el-button>
<el-button @click="getCheckedKeys">通过 key 获取</el-button>
<el-button @click="setCheckedNodes">通过 node 设置</el-button>
<el-button @click="setCheckedKeys">通过 key 设置</el-button>
<el-button @click="resetChecked">清空</el-button>
</div>
<script>
  export default {
methods: {
      getCheckedNodes() {
    console.log(this.$refs.tree.getCheckedNodes());
  },
  getCheckedKeys() {
    console.log(this.$refs.tree.getCheckedKeys());
  },
  setCheckedNodes() {
    this.$refs.tree.setCheckedNodes([{
      id: 5,
      label: '二级 2-1'
    }, {
      id: 9,
      label: '三级 1-1-1'
    }]);
  },
  setCheckedKeys() {
    this.$refs.tree.setCheckedKeys([3]);
  },
  resetChecked() {
    this.$refs.tree.setCheckedKeys([]);
  }
},

data() {
  return {
    data: [{
      id: 1,
      label: '一级 1',
      children: [{
        id: 4,
        label: '二级 1-1',
        children: [{
          id: 9,
          label: '三级 1-1-1'
        }, {
          id: 10,
          label: '三级 1-1-2'
        }]
      }]
    }, {
      id: 2,
      label: '一级 2',
      children: [{
        id: 5,
        label: '二级 2-1'
      }, {
        id: 6,
        label: '二级 2-2'
      }]
    }, {
      id: 3,
      label: '一级 3',
      children: [{
        id: 7,
        label: '二级 3-1'
      }, {
        id: 8,
        label: '二级 3-2'
      }]
    }],
    defaultProps: {
      children: 'children',
      label: 'label'
    }
  };
}
};
</script>
我主要用了getCheckedKeys来获得选中node的key值也就是id值(node-key="id"这里要写)( :data="data") 来绑定data
前端是如何通过后端提供的数据(listAll接口提供所有的数据条)生成children属性,(因为数据库设计没有children字段。)
listAll controller中的/listAll
一开始用了懒加载,但是不行,因为只能点击之后才加载节点数据,不符合要求 image.png
如果是懒加载的话,方法就是这样: image.png

所以使用一开始就全部加载完成的写法


image.png
return的内容
ids用来放getcheckedkeys返回的id数组
:param="form"是传到后端的参数
后端用一个list接收 image.png
async getTreeData() {
  let rs = await this.$post("projectmanagement/listAll", {});
  if (rs.status == "200") {
    console.log(rs.payload);
    this.data = this.getListData(rs.payload, {
      id: "id",
      pid: "parentId",
      children: "children"
    });
    return this.data;
  }
},
getListData(data, config) {
  var id = config.id || "id";
  var pid = config.pid || "pid";
  var children = config.children || "children";
  var idMap = {};
  var jsonTree = [];
  if (!data) {
    return;
  }
  data.forEach(function(v) {
    idMap[v[id]] = v;
  });
  data.forEach(function(v) {
    var parent = idMap[v[pid]];
    console.log(pid);
    if (parent) {
      !parent[children] && (parent[children] = []);
      parent[children].push(v);
    } else {
      jsonTree.push(v);
    }
  });
  console.log(jsonTree);
  return jsonTree;
},
用rs接收传回来的值,payload是数组。(有点头疼,看着心烦,用后端写会方便理解一点点,虽然逻辑是一样的。 不要写async,这个我还不太理解,等会看。)再在mounted里面用这个函数。 image.png

2019-05-20 DAY20

后天就去迪士尼啦~~~周末吃了太多垃圾食品。。毁容了噗。

在后端实现list有children、节点,生成树

private List<ProjectManagement> createTree(List<ProjectManagement> list){
    List<ProjectManagement> rootList = new ArrayList<>();
    Map<Integer,ProjectManagement> projectMap = new HashMap<>(rootList.size());
    for (int i = list.size() - 1; i > 0; i --){
        ProjectManagement pm = list.get(i);
        if(pm.getParentId() ==  1){
            rootList.add(pm);
        }
        projectMap.put(pm.getId(),pm);
    }
    for (Integer key : projectMap.keySet()){
        ProjectManagement pm = projectMap.get(key);
        if (projectMap.get(pm.getParentId()) != null){
            ProjectManagement parentPm = projectMap.get(pm.getParentId());
            List<ProjectManagement> children = parentPm.getChildren();
            if (children == null){
                children = new ArrayList<>();
            }
            children.add(pm);
            parentPm.setChildren(children);
        }
    }
    List<ProjectManagement> finalList = new ArrayList<>();
    ProjectManagement root = new ProjectManagement();
    root.setId(0);
    root.setName("文档资料");
    root.setChildren(rootList);
    finalList.add(root);
    return finalList;
}

前端: image.png

刚刚去老大那边问了一下。。然后发现功能性错误。。哎。。
要有两个表,一个项目表,一个文档表。做吧。。

2019-05-21 DAY21

周二,同事们搬到楼上去了。。。。老大应该也是。。。。。。
明天去上海!嗯!
出现了一个问题,就是上传文件过大的过,上传不成功。


image.png

查了一下,是nginx服务器 配置问题???可是我的电脑没装这个呀。。。,大小限制应该是1M。

报错

tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field files exceeds its maximum permitted size of 1048576 bytes.]

在配置文件里面 springboot2.x之后用

http:
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 1000MB # 设置最大的请求文件的大小
修改完配置文件之后,在启动类App.class文件中配置Bean来设置文件大小 image.png
    /**
 * 文件上传配置
 * @return
 */
@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    //单个文件最大
    factory.setMaxFileSize("102400KB"); //KB,MB
    /// 设置总上传数据总大小
    factory.setMaxRequestSize("1024000KB");
    return factory.createMultipartConfig();
}
这里也要改 image.png 然后发现删除整个项目的bug。改好了。 image.png

zuul和eureka server

参考:服务网关zuul

Eureka server提供服务注册和发现
zuul服务化
通过url映射的方式来实现zull的转发有局限性,比如每增加一个服务就需要配置一条内容,另外后端的服务如果是动态来提供,就不能采用这种方案来配置了。实际上在实现微服务架构时,服务名与服务实例地址的关系在eureka server中已经存在了,所以只需要将Zuul注册到eureka server上去发现其他服务,就可以实现对serviceId的映射。

默认情况下,Zuul会代理所有注册到Eureka Server的微服务,并且Zuul的路由规则如下:http://ZUUL_HOST:ZUUL_PORT/微服务在Eureka上的serviceId/**会被转发到serviceId对应的微服务。

2019-05-27 DAY22

解决了删除的问题。。

@PostMapping("/deleteAllDocument")
@ResponseBody
ApiResult deleteAllDocumentByProjectId(@RequestBody DynamicBean form) {
    int id = form.getValue("id");
    ProjectManagement pm = projectManagementService.selectById(id);

    List<ProjectManagement> list = createTree(projectManagementService.listAll());
    ProjectManagement q = new ProjectManagement();
    for(ProjectManagement pppp : list){
        if(pppp.getChildren() != null){
            for(ProjectManagement ppp : pppp.getChildren()){
                if(ppp.getId() == id){
                    q = ppp;
                    break;
                }
                if(ppp.getChildren() != null){
                    for(ProjectManagement ppppp : ppp.getChildren()){
                        if(ppppp.getId() == id){
                            q = ppppp;
                            break;
                        }
                    }
                }

            }
        }
    }

    int j,i,k = 0;
    List<ProjectManagement> childrenlist = q.getChildren();
    if(childrenlist != null){
        for(ProjectManagement pp : childrenlist){
            if(projectManagementService.selectProjectDocumentByProjectId(pp.getId()).size() != 0){
                i = projectManagementService.deleteAllDocumentByProjectId(pp.getId());
                if( i == 0 ){ System.out.println("没删掉文档"); return ApiResult.build(500, "删除失败"); }
                if (i == 1) { System.out.println("删掉了文档");}
            }
            k = projectManagementService.deleteById(pp.getId());
            if ( k == 0){ return ApiResult.build(500, "删除失败"); }
        }
    } else {
        if(projectManagementService.selectProjectDocumentByProjectId(pm.getId()).size() != 0){
            i = projectManagementService.deleteAllDocumentByProjectId(pm.getId());
            if( i == 0 ){ System.out.println("没删掉文档"); return ApiResult.build(500, "删除失败");}
            if (i == 1) { System.out.println("删掉了文档");}
        }
    }
    j = projectManagementService.deleteById(id);
    return j > 0 ? ApiResult.build(200,"删除成功") : ApiResult.build(500, "删除失败");


}

很蠢的办法。。。
文档管理。
终。

新的任务:

1、选择商户、活动、规格号、、、 然后加一个是否匿名
2、渠道号增删和下拉框选择渠道号

2019-05-28 DAY23

完成了一部份

2019-05-30 DAY24

又完成了一部分,还需要数据库数据。。我还不清楚没和我说。。
好吧,,然后他让我自己写

2019-05-31 DAY25

昨天的内容写完了,但是没有新建分支。。。有点难受,wu怎么办呢,应该不急吧

2019-06-3 DAY26

invalid byte sequ
ence in US-ASCII (ArgumentError)
报错。。找不到原因

然后就新建了一个分支,加进去了。。前端的还没push上去。好了。

git指令:
新建一个branch,然后push这个branch。
先看自己的状态:git status
再git push origin develop_wtt_coupon

相关文章

  • 实习生活记录——SINCE2019-05-14

    2019-05-14 DAY17 明天周三要上课,可以休息又是一天的新动力。!今天要完成,点击一个node,实现...

  • 开始

    每天写点东西,记录实习律师的生活和见闻

  • 我一直都在流浪  可我不曾见过海洋

    实习生 ,长期在外出差。 喜欢拍照 记录生活

  • 实习记录

    实习一段时间了,说说最近的感受吧 我是转行的,现在是一名材料计算的研究生,为什么要说材料计算呢,我是希望去面试的时...

  • 实习记录

    来福州第二天 今天天气比较凉爽,早上我们宿舍七点零几就起床了,我手机七点的闹钟突然响起来,我就下床把他关掉了。 阳...

  • 实习记录

    这周是来上海实习的第三周了,今天却也是最伤心最委屈的时刻。明明你很努力的做事,但是却还是被上司骂个不停。 我知道自...

  • 实习记录

    上周五从BD离职了,走之前跟同事一起吃了一顿饭来欢送我,临走的时候,组里的同事也陪着我一起下楼,把我送上了回学校的...

  • 实习记录

    2016.07.13 第一天 今天正式实习了,在高新区北部湾银行大堂里当一名实习生.从一开始过去报道时的拘谨,到...

  • 实习记录

    从今天起我的暑假生活正式开启啦! 一直都在找实习还是找兼职纠结(一个是没有工资的苦逼实习生,一个是月薪四五千的话务...

  • 实习记录

    你叫什么名字?“……平”,邓小平的平吗?,“不是,fu pin的平”,啊!扶贫的贫吗?,“不,是浮萍的萍”...

网友评论

      本文标题:实习生活记录——SINCE2019-05-14

      本文链接:https://www.haomeiwen.com/subject/kfpjaqtx.html