diff --git a/xm-bootstrap/src/main/java/com/WebSecurityConfig.java b/xm-bootstrap/src/main/java/com/WebSecurityConfig.java index 7541a5e2..6d47bb21 100644 --- a/xm-bootstrap/src/main/java/com/WebSecurityConfig.java +++ b/xm-bootstrap/src/main/java/com/WebSecurityConfig.java @@ -40,6 +40,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { http.authorizeRequests().antMatchers( "/**/xm/core/xmTask/shareTaskDetail", "/**/xm/core/xmTask/getOutTask", + "/**/xm/core/xmTask/upBrowseTimes", "/**/xm/core/xmBranchState/list/portal/allBranchSum", "/**/xm/core/xmProjectState/list/portal", "/**/core/xmRecordVisit/add", diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java index eb5e273d..639a6e00 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java @@ -209,6 +209,9 @@ public class XmTaskController { @ApiOperation("更新任务的浏览量+1") + @ApiImplicitParams({ + @ApiImplicitParam(name="id",value="任务编号",required=true) + }) @RequestMapping(value="/upBrowseTimes",method=RequestMethod.POST) public Map upBrowseTimes( @ApiIgnore @RequestBody XmTask xmTask){ User user=LoginUtils.getCurrentUserInfo(); @@ -442,11 +445,24 @@ public class XmTaskController { tips.setFailureMsg("任务编号id必传"); } if(!StringUtils.hasText(shareKey)){ - tips.setFailureMsg("分享码shareKey必传"); + //tips.setFailureMsg("分享码shareKey必传"); } - //todo 检测分析妈的正确性 + if(tips.isOk()){ Map taskDb= xmTaskService.shareTaskDetail(xmTask); + // 检测任务是否可被查询 + if(taskDb==null|| taskDb.isEmpty()){ + return ResponseHelper.failed("data-0","数据不存在"); + } + String toTaskCenter= (String) taskDb.get("toTaskCenter"); + String crowd= (String) taskDb.get("crowd"); + + if( ! "1".equals(crowd) ){ + return ResponseHelper.failed("crowd-0","非众包任务,无权查看"); + } + if( ! "1".equals(toTaskCenter)){ + return ResponseHelper.failed("toTaskCenter-0","未开放互联网访问权限"); + } m.put("data",taskDb); m.put("tips", tips); } diff --git a/xm-core/src/main/java/com/xm/core/entity/XmTask.java b/xm-core/src/main/java/com/xm/core/entity/XmTask.java index 689b0dac..a1327a53 100644 --- a/xm-core/src/main/java/com/xm/core/entity/XmTask.java +++ b/xm-core/src/main/java/com/xm/core/entity/XmTask.java @@ -9,7 +9,7 @@ import java.math.BigDecimal; /** * 组织 com 顶级模块 xm 大模块 core 小模块
* 实体 XmTask所有属性名:
- * "id","任务编号","name","任务名称","parentTaskid","父任务编号","parentTaskname","父任务名称","projectId","项目编号","projectName","项目名称","level","任务级别","sortLevel","序号","executorUserid","任务执行人编号","executorUsername","任务执行人","preTaskid","前置任务编号","preTaskname","前置任务名称","startTime","任务开始时间","endTime","任务结束时间","milestone","里程碑","description","任务描述","remarks","备注","createUserid","任务创建人编号(谁创建谁负责)","createUsername","任务创建人(谁创建谁负责)","createTime","创建时间","rate","任务进度0-100(=实际工时/(实际工时+剩余工时)*100)","budgetAt","当前任务预算金额(calc_type=2时预算工时*单价,calc_type=1时下级汇总)","budgetWorkload","预算工时(calc_type=2时手工填写,calc_type=1时下级汇总)","actAt","当前任务实际费用金额(calc_type=2时,取实际工时*单价,calc_type=1时取下级汇总数据)待结算金额","actWorkload","任务取工时表报工工时汇总,","taskState","任务状态0待领取1已领取执行中2已完工3已验收4已结算9已关闭","taskType","0售前方案1投标2需求3设计4开发5测试6验收7部署8运维--来自基础数据表taskType","taskClass","1需结算0不需结算","toTaskCenter","是否发布到任务大厅0否1是,1时互联网可访问","actStartTime","实际开始时间-任务状态变成执行中的时间","actEndTime","实际结束时间-任务状态变成完工状态时的时间","bizProcInstId","当前流程实例编号","bizFlowState","当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除","phaseId","项目阶段编号(作废)","phaseName","项目阶段名称(作废)","taskSkillNames","技能列表,逗号分隔","exeUsernames","执行人列表逗号分隔如陈x(审核人),王x(监控人)","taskSkillIds","技能编号列表逗号分隔","exeUserids","执行人编号列表逗号分隔如u1(1),u2(2)","taskOut","执行方式-0内研1外购","planType","计划类型w1-周,w2-2周,w3-3周,m1-1月,m2-2月,q1-季,q2-半年,y1-年","settleSchemel","任务结算方案-来自数字字典xmTaskSettleSchemel","menuId","归属功能编号","menuName","归属功能名称","productId","产品编号根据功能变化带进","cbranchId","创建机构","cdeptid","创建部门","tagIds","标签编号,逗号分割","tagNames","标签名称,逗号分割","ntype","节点类型0-任务,1-计划。计划下可建立计划和任务,任务下不允许再扩展。也就是非叶子节点都是计划,叶子节点有可能是计划或者任务","childrenCnt","儿子节点个数","ltime","更新时间","pidPaths","父级id逗号分割,最后一个为本节点节点编号,以,号结尾","lvl","层级0-顶级,1-一级,2-二级,3-三级,4-四级。总共5级","isTpl","是否为模板","keyPath","是否为关键路径上的节点","uniInnerPrice","内部单位工时单价","uniOutPrice","外部单位工时单价","calcType","数据统计方式","ptype","计划分类0-项目,1产品,空为不区分","wtype","报工方式1-强制每日报工,2-工期内报工,0-无需报工","bctrl","报工限制0-不限制,1-不得超出预估工时","initWorkload","原始预估工作量,budget_workload发生变化后,进行备份","shareFee","分享赚佣金","oshare","开启分享赚功能0-否1-待付款,2已付款","crowd","是否众包0否1是,众包属于外购的一种","browseUsers","浏览人数","execUsers","投标人数","cityId","城市编号","cityName","城市名称","regionType","地域限制方式0-不限制,1-同城,2-同省,3-同国,4-同洲","browseTimes","浏览次数","capaLvls","能力等级最小要求","tranMode","交易模式1-招标,2-雇佣","supRequires","保障要求编号列表,多个逗号分割","hot","是否为热搜0否1待付款2已开通3已过期,每次热搜3天,3天后自动取消热搜","top","是否为置顶0否1待付款2已开通3已过期,每次置顶3天,3天后自动取消置顶","urgent","加急0否1待付款2已开通3已过期","crmSup","客服包办0否1待付款2已开通,理顺需求、比稿选稿","bidStep","投标流程0-草稿,1-发布需求,2-用户投标,3雇主选标,4拓管赏金,5用户工作,6验收付款,7完结","interestLvls","会员等级最小要求","filePaths","附件地址列表,逗号分割","estate","资金托管状况0-无须托管,1-待付款,2-已托管资金,3-已付款给服务商,4-已退款","efunds","托管金额=quote_final_at","etoPlatTime","托管资金付款给平台的时间","etoDevTime","托管资金支付给服务商的时间","ebackTime","托管资金退回甲方时间","topStime","置顶开始时间","topEtime","置顶结束时间","hotStime","热搜开始时间","hotEtime","热搜结束时间","urgentStime","加急开始时间","urgentEtime","加急结束时间","quoteFinalAt","众包最终确定价格","provinceId","省编号","provinceName","省名称","areaId","区县编号","areaName","区县名称";
+ * "id","任务编号","name","任务名称","parentTaskid","父任务编号","parentTaskname","父任务名称","projectId","项目编号","projectName","项目名称","level","任务级别","sortLevel","序号","executorUserid","任务执行人编号","executorUsername","任务执行人","preTaskid","前置任务编号","preTaskname","前置任务名称","startTime","任务开始时间","endTime","任务结束时间","milestone","里程碑","description","任务描述","remarks","备注","createUserid","任务创建人编号(谁创建谁负责)","createUsername","任务创建人(谁创建谁负责)","createTime","创建时间","rate","任务进度0-100(=实际工时/(实际工时+剩余工时)*100)","budgetAt","当前任务预算金额(calc_type=2时预算工时*单价,calc_type=1时下级汇总)","budgetWorkload","预算工时(calc_type=2时手工填写,calc_type=1时下级汇总)","actAt","当前任务实际费用金额(calc_type=2时,取实际工时*单价,calc_type=1时取下级汇总数据)待结算金额","actWorkload","任务取工时表报工工时汇总,","taskState","任务状态0待领取1已领取执行中2已完工3已验收4已结算9已关闭","taskType","0售前方案1投标2需求3设计4开发5测试6验收7部署8运维--来自基础数据表taskType","taskClass","1需结算0不需结算","toTaskCenter","是否发布到任务大厅0否1是,1时互联网可访问","actStartTime","实际开始时间-任务状态变成执行中的时间","actEndTime","实际结束时间-任务状态变成完工状态时的时间","bizProcInstId","当前流程实例编号","bizFlowState","当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除","phaseId","项目阶段编号(作废)","phaseName","项目阶段名称(作废)","taskSkillNames","技能列表,逗号分隔","exeUsernames","执行人列表逗号分隔如陈x(审核人),王x(监控人)","taskSkillIds","技能编号列表逗号分隔","exeUserids","执行人编号列表逗号分隔如u1(1),u2(2)","taskOut","执行方式-0内研1外购","planType","计划类型w1-周,w2-2周,w3-3周,m1-1月,m2-2月,q1-季,q2-半年,y1-年","settleSchemel","任务结算方案-来自数字字典xmTaskSettleSchemel","menuId","归属功能编号","menuName","归属功能名称","productId","产品编号根据功能变化带进","cbranchId","创建机构","cdeptid","创建部门","tagIds","标签编号,逗号分割","tagNames","标签名称,逗号分割","ntype","节点类型0-任务,1-计划。计划下可建立计划和任务,任务下不允许再扩展。也就是非叶子节点都是计划,叶子节点有可能是计划或者任务","childrenCnt","儿子节点个数","ltime","更新时间","pidPaths","父级id逗号分割,最后一个为本节点节点编号,以,号结尾","lvl","层级0-顶级,1-一级,2-二级,3-三级,4-四级。总共5级","isTpl","是否为模板","keyPath","是否为关键路径上的节点","uniInnerPrice","内部单位工时单价","uniOutPrice","外部单位工时单价","calcType","数据统计方式","ptype","计划分类0-项目,1产品,空为不区分","wtype","报工方式1-强制每日报工,2-工期内报工,0-无需报工","bctrl","报工限制0-不限制,1-不得超出预估工时","initWorkload","原始预估工作量,budget_workload发生变化后,进行备份","shareFee","分享赚佣金","oshare","开启分享赚功能0-否1-待付款,2已付款","crowd","是否众包0否1是,众包属于外购的一种","browseUsers","浏览人数","execUsers","投标人数","cityId","城市编号","cityName","城市名称","regionType","地域限制方式0-不限制,1-同城,2-同省,3-同国,4-同洲","browseTimes","浏览次数","capaLvls","能力等级最小要求","tranMode","交易模式1-招标,2-雇佣","supRequires","保障要求编号列表,多个逗号分割","hot","是否为热搜0否1待付款2已开通3已过期,每次热搜3天,3天后自动取消热搜","top","是否为置顶0否1待付款2已开通3已过期,每次置顶3天,3天后自动取消置顶","urgent","加急0否1待付款2已开通3已过期","crmSup","客服包办0否1待付款2已开通,理顺需求、比稿选稿","bidStep","投标流程0-草稿,1-发布需求,2-用户投标,3雇主选标,4拓管赏金,5用户工作,6验收付款,7完结","interestLvls","会员等级最小要求","filePaths","附件地址列表,逗号分割","estate","资金托管状况0-无须托管,1-待付款,2-已托管资金,3-已付款给服务商,4-已退款","efunds","托管金额=quote_final_at","etoPlatTime","托管资金付款给平台的时间","etoDevTime","托管资金支付给服务商的时间","ebackTime","托管资金退回甲方时间","topStime","置顶开始时间","topEtime","置顶结束时间","hotStime","热搜开始时间","hotEtime","热搜结束时间","urgentStime","加急开始时间","urgentEtime","加急结束时间","quoteFinalAt","众包最终确定价格","provinceId","省编号","provinceName","省名称","areaId","区县编号","areaName","区县名称","status","0-草稿,1-正式";
* 当前主键(包括多主键):
* id;
*/ @@ -313,6 +313,9 @@ public class XmTask implements java.io.Serializable { @ApiModelProperty(notes="区县名称",allowEmptyValue=true,example="",allowableValues="") String areaName; + + @ApiModelProperty(notes="0-草稿,1-正式",allowEmptyValue=true,example="",allowableValues="") + String status; /** *任务编号 diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml index d90ffe69..9c3f6bf4 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml @@ -436,7 +436,7 @@ insert into xm_task( ) values ( - #{id},#{name},#{parentTaskid},#{parentTaskname},#{projectId},#{projectName},#{level},#{sortLevel},#{executorUserid},#{executorUsername},#{preTaskid},#{preTaskname},#{startTime},#{endTime},#{milestone},#{description},#{remarks},#{createUserid},#{createUsername},#{createTime},#{rate},#{budgetAt},#{budgetWorkload},#{actAt},#{actWorkload},#{taskState},#{taskType},#{taskClass},#{toTaskCenter},#{actStartTime},#{actEndTime},#{bizProcInstId},#{bizFlowState},#{phaseId},#{phaseName},#{taskSkillNames},#{exeUsernames},#{taskSkillIds},#{exeUserids},#{taskOut},#{planType},#{settleSchemel},#{menuId},#{menuName},#{productId},#{cbranchId},#{cdeptid},#{tagIds},#{tagNames},#{ntype},#{childrenCnt},#{ltime},#{pidPaths},#{lvl},#{isTpl},#{keyPath},#{uniInnerPrice},#{uniOutPrice},#{calcType},#{ptype},#{wtype},#{bctrl},#{initWorkload},#{shareFee},#{oshare},#{crowd},#{browseUsers},#{execUsers},#{cityId},#{cityName},#{regionType},#{browseTimes},#{capaLvls},#{tranMode},#{supRequires},#{hot},#{top},#{urgent},#{crmSup},#{bidStep},#{interestLvls},#{filePaths},#{estate},#{efunds},#{etoPlatTime},#{etoDevTime},#{ebackTime},#{topStime},#{topEtime},#{hotStime},#{hotEtime},#{urgentStime},#{urgentEtime},#{quoteFinalAt},#{provinceId},#{provinceName},#{areaId},#{areaName} + #{id},#{name},#{parentTaskid},#{parentTaskname},#{projectId},#{projectName},#{level},#{sortLevel},#{executorUserid},#{executorUsername},#{preTaskid},#{preTaskname},#{startTime},#{endTime},#{milestone},#{description},#{remarks},#{createUserid},#{createUsername},#{createTime},#{rate},#{budgetAt},#{budgetWorkload},#{actAt},#{actWorkload},#{taskState},#{taskType},#{taskClass},#{toTaskCenter},#{actStartTime},#{actEndTime},#{bizProcInstId},#{bizFlowState},#{phaseId},#{phaseName},#{taskSkillNames},#{exeUsernames},#{taskSkillIds},#{exeUserids},#{taskOut},#{planType},#{settleSchemel},#{menuId},#{menuName},#{productId},#{cbranchId},#{cdeptid},#{tagIds},#{tagNames},#{ntype},#{childrenCnt},#{ltime},#{pidPaths},#{lvl},#{isTpl},#{keyPath},#{uniInnerPrice},#{uniOutPrice},#{calcType},#{ptype},#{wtype},#{bctrl},#{initWorkload},#{shareFee},#{oshare},#{crowd},#{browseUsers},#{execUsers},#{cityId},#{cityName},#{regionType},#{browseTimes},#{capaLvls},#{tranMode},#{supRequires},#{hot},#{top},#{urgent},#{crmSup},#{bidStep},#{interestLvls},#{filePaths},#{estate},#{efunds},#{etoPlatTime},#{etoDevTime},#{ebackTime},#{topStime},#{topEtime},#{hotStime},#{hotEtime},#{urgentStime},#{urgentEtime},#{quoteFinalAt},#{provinceId},#{provinceName},#{areaId},#{areaName},#{status} ) @@ -492,11 +492,6 @@ update xm_task - - bid_step=case when crowd='1' and #{taskState}='2' and bid_step in('5') then '6' - when crowd='1' and #{taskState} in('0','1') and bid_step in('6') then '5' - else bid_step end - where (id) in @@ -516,7 +511,7 @@ - id,name,parent_taskid,parent_taskname,project_id,project_name,level,sort_level,executor_userid,executor_username,pre_taskid,pre_taskname,start_time,end_time,milestone,description,remarks,create_userid,create_username,create_time,rate,budget_at,budget_workload,act_at,act_workload,task_state,task_type,task_class,to_task_center,act_start_time,act_end_time,biz_proc_inst_id,biz_flow_state,phase_id,phase_name,task_skill_names,exe_usernames,task_skill_ids,exe_userids,task_out,plan_type,settle_schemel,menu_id,menu_name,product_id,cbranch_id,cdeptid,tag_ids,tag_names,ntype,children_cnt,ltime,pid_paths,lvl,is_tpl,key_path,uni_inner_price,uni_out_price,calc_type,ptype,wtype,bctrl,init_workload,share_fee,oshare,crowd,browse_users,exec_users,city_id,city_name,region_type,browse_times,capa_lvls,tran_mode,sup_requires,hot,top,urgent,crm_sup,bid_step,interest_lvls,file_paths,estate,efunds,eto_plat_time,eto_dev_time,eback_time,top_stime,top_etime,hot_stime,hot_etime,urgent_stime,urgent_etime,quote_final_at,province_id,province_name,area_id,area_name + id,name,parent_taskid,parent_taskname,project_id,project_name,level,sort_level,executor_userid,executor_username,pre_taskid,pre_taskname,start_time,end_time,milestone,description,remarks,create_userid,create_username,create_time,rate,budget_at,budget_workload,act_at,act_workload,task_state,task_type,task_class,to_task_center,act_start_time,act_end_time,biz_proc_inst_id,biz_flow_state,phase_id,phase_name,task_skill_names,exe_usernames,task_skill_ids,exe_userids,task_out,plan_type,settle_schemel,menu_id,menu_name,product_id,cbranch_id,cdeptid,tag_ids,tag_names,ntype,children_cnt,ltime,pid_paths,lvl,is_tpl,key_path,uni_inner_price,uni_out_price,calc_type,ptype,wtype,bctrl,init_workload,share_fee,oshare,crowd,browse_users,exec_users,city_id,city_name,region_type,browse_times,capa_lvls,tran_mode,sup_requires,hot,top,urgent,crm_sup,bid_step,interest_lvls,file_paths,estate,efunds,eto_plat_time,eto_dev_time,eback_time,top_stime,top_etime,hot_stime,hot_etime,urgent_stime,urgent_etime,quote_final_at,province_id,province_name,area_id,area_name,status @@ -619,6 +614,7 @@ and res.province_name = #{provinceName} and res.area_id = #{areaId} and res.area_name = #{areaName} + and res.status = #{status} @@ -718,7 +714,8 @@ province_id = #{provinceId}, province_name = #{provinceName}, area_id = #{areaId}, - area_name = #{areaName} + area_name = #{areaName}, + status = #{status} name = #{name}, @@ -818,6 +815,7 @@ province_name = #{provinceName}, area_id = #{areaId}, area_name = #{areaName}, + status = #{status}, @@ -917,6 +915,7 @@ province_id = #{item.provinceId}, province_name = #{item.provinceName}, area_id = #{item.areaId}, - area_name = #{item.areaName} + area_name = #{item.areaName}, + status = #{item.status} \ No newline at end of file diff --git a/xm-core/src/test/java/com/WebSecurityConfig.java b/xm-core/src/test/java/com/WebSecurityConfig.java index 57774695..97f90672 100644 --- a/xm-core/src/test/java/com/WebSecurityConfig.java +++ b/xm-core/src/test/java/com/WebSecurityConfig.java @@ -39,6 +39,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/**/xm/core/xmTask/shareTaskDetail", "/**/core/xmRecordVisit/add", + "/**/xm/core/xmTask/upBrowseTimes", + "/**/xm/core/xmTask/getOutTask", "/swagger-ui.html", "/webjars/**", "/swagger-ui/**",