Просмотр исходного кода

优化 投诉建议 修改为cmd 方式

wuxw лет назад: 3
Родитель
Сommit
0501404fed

+ 0 - 55
service-api/src/main/java/com/java110/api/listener/complaint/DeleteComplaintListener.java

@@ -1,55 +0,0 @@
-package com.java110.api.listener.complaint;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.complaint.IComplaintBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.utils.util.Assert;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-
-import com.java110.core.annotation.Java110Listener;
-import com.java110.utils.constant.ServiceCodeComplaintConstant;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-
-/**
- * 保存小区侦听
- * add by wuxw 2019-06-30
- */
-@Java110Listener("deleteComplaintListener")
-public class DeleteComplaintListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IComplaintBMO complaintBMOImpl;
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
-
-        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
-
-    }
-
-    @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
-
-       complaintBMOImpl.deleteComplaint(reqJson, context);
-
-    }
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeComplaintConstant.DELETE_COMPLAINT;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-}

+ 0 - 71
service-api/src/main/java/com/java110/api/listener/complaint/UpdateComplaintListener.java

@@ -1,71 +0,0 @@
-package com.java110.api.listener.complaint;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.complaint.IComplaintBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.intf.store.IComplaintInnerServiceSMO;
-import com.java110.utils.util.Assert;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.utils.constant.ServiceCodeComplaintConstant;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-
-/**
- * 保存投诉建议侦听
- * add by wuxw 2019-06-30
- */
-@Java110Listener("updateComplaintListener")
-public class UpdateComplaintListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IComplaintBMO complaintBMOImpl;
-
-    @Autowired
-    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
-
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-
-        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
-        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
-        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择投诉类型");
-        //Assert.hasKeyAndValue(reqJson, "roomId", "必填,请选择房屋编号");
-        Assert.hasKeyAndValue(reqJson, "complaintName", "必填,请填写投诉人");
-        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写投诉电话");
-        //Assert.hasKeyAndValue(reqJson, "state", "必填,请填写投诉状态");
-        Assert.hasKeyAndValue(reqJson, "context", "必填,请填写投诉内容");
-
-    }
-
-    @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
-        complaintBMOImpl.upComplaint(reqJson, context);
-
-    }
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeComplaintConstant.UPDATE_COMPLAINT;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-    public IComplaintInnerServiceSMO getComplaintInnerServiceSMOImpl() {
-        return complaintInnerServiceSMOImpl;
-    }
-
-    public void setComplaintInnerServiceSMOImpl(IComplaintInnerServiceSMO complaintInnerServiceSMOImpl) {
-        this.complaintInnerServiceSMOImpl = complaintInnerServiceSMOImpl;
-    }
-}

+ 11 - 3
service-common/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java

@@ -78,8 +78,13 @@ public class ComplaintUserInnerServiceSMOImpl extends BaseServiceSMO implements
         Map<String, Object> variables = new HashMap<String, Object>();
         //variables.put("complaintDto", complaintDto);
         variables.put("startUserId", complaintDto.getCurrentUserId());
+        String key = getWorkflowDto(complaintDto.getCommunityId());
 
-        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(complaintDto.getCommunityId()), complaintDto.getComplaintId(), variables);
+        if(StringUtil.isEmpty(key)){
+            return null;
+        }
+
+        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, complaintDto.getComplaintId(), variables);
         //将得到的实例流程id值赋给之前设置的变量
         String processInstanceId = processInstance.getId();
         // System.out.println("流程开启成功.......实例流程id:" + processInstanceId);
@@ -98,11 +103,13 @@ public class ComplaintUserInnerServiceSMOImpl extends BaseServiceSMO implements
         workflowDto.setCommunityId(communityId);
         List<WorkflowDto> workflowDtos = workflowInnerServiceSMOImpl.queryWorkflows(workflowDto);
 
-        Assert.listOnlyOne(workflowDtos, "未找到 投诉建议流程或找到多条,请在物业账号系统管理下流程管理中配置流程");
+        if(workflowDtos == null || workflowDtos.size() < 1){
+            return "";
+        }
 
         WorkflowDto tmpWorkflowDto = workflowDtos.get(0);
         if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) {
-            throw new IllegalArgumentException("投诉建议流程还未部署");
+            return "";
         }
         return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId();
     }
@@ -312,6 +319,7 @@ public class ComplaintUserInnerServiceSMOImpl extends BaseServiceSMO implements
      */
     public boolean deleteTask(@RequestBody ComplaintDto complaintDto){
         String taskId = complaintDto.getTaskId();
+
         Task task = taskService.createTaskQuery().taskId(complaintDto.getTaskId()).singleResult();
         String processInstanceId = task.getProcessInstanceId();
         ProcessInstance pi = runtimeService.createProcessInstanceQuery()

+ 33 - 55
service-api/src/main/java/com/java110/api/listener/complaint/AuditComplaintListener.java

@@ -1,32 +1,27 @@
-package com.java110.api.listener.complaint;
+package com.java110.store.cmd.complaint;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.complaint.IComplaintBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.complaint.ComplaintDto;
 import com.java110.intf.common.IComplaintUserInnerServiceSMO;
+import com.java110.intf.community.IComplaintV1InnerServiceSMO;
 import com.java110.intf.store.IComplaintInnerServiceSMO;
-import com.java110.dto.complaint.ComplaintDto;
-import com.java110.utils.constant.ServiceCodeComplaintConstant;
+import com.java110.po.complaint.ComplaintPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
 import java.util.List;
 
-
-/**
- * 查询小区侦听类
- */
-@Java110Listener("auditComplaintListener")
-public class AuditComplaintListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IComplaintBMO complaintBMOImpl;
+@Java110Cmd(serviceCode = "complaint.auditComplaint")
+public class AuditComplaintCmd extends Cmd {
 
     @Autowired
     private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
@@ -35,33 +30,11 @@ public class AuditComplaintListener extends AbstractServiceApiPlusListener {
     @Autowired
     private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
 
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeComplaintConstant.AUDIT_COMPLAINT;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-    public IComplaintUserInnerServiceSMO getComplaintUserInnerServiceSMOImpl() {
-        return complaintUserInnerServiceSMOImpl;
-    }
-
-    public void setComplaintUserInnerServiceSMOImpl(IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl) {
-        this.complaintUserInnerServiceSMOImpl = complaintUserInnerServiceSMOImpl;
-    }
+    @Autowired
+    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
 
     @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
         Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
         Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区信息");
@@ -69,11 +42,10 @@ public class AuditComplaintListener extends AbstractServiceApiPlusListener {
         Assert.hasKeyAndValue(reqJson, "state", "必填,请填写审核状态");
         Assert.hasKeyAndValue(reqJson, "remark", "必填,请填写批注");
         Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户信息");
-        //super.validatePageInfo(reqJson);
     }
 
     @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
 
         ComplaintDto complaintDto = new ComplaintDto();
         complaintDto.setComplaintId(reqJson.getString("complaintId"));
@@ -93,17 +65,23 @@ public class AuditComplaintListener extends AbstractServiceApiPlusListener {
         boolean isLastTask = complaintUserInnerServiceSMOImpl.completeTask(complaintDto);
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
         if (isLastTask) {
-            complaintBMOImpl.updateComplaint(reqJson, context);
+            complaintDto = new ComplaintDto();
+            complaintDto.setStoreId(reqJson.getString("storeId"));
+            complaintDto.setCommunityId(reqJson.getString("communityId"));
+            complaintDto.setComplaintId(reqJson.getString("complaintId"));
+            complaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
+
+            Assert.listOnlyOne(complaintDtos, "存在多条记录,或不存在数据" + complaintDto.getComplaintId());
+
+            JSONObject businessComplaint = new JSONObject();
+            businessComplaint.putAll(BeanConvertUtil.beanCovertMap(complaintDtos.get(0)));
+            businessComplaint.put("state", "10002");
+            ComplaintPo complaintPo = BeanConvertUtil.covertBean(businessComplaint, ComplaintPo.class);
+            int flag = complaintV1InnerServiceSMOImpl.updateComplaint(complaintPo);
+            if (flag < 1) {
+                throw new CmdException("投诉不存在");
+            }
         }
         context.setResponseEntity(responseEntity);
-
-    }
-
-    public IComplaintInnerServiceSMO getComplaintInnerServiceSMOImpl() {
-        return complaintInnerServiceSMOImpl;
-    }
-
-    public void setComplaintInnerServiceSMOImpl(IComplaintInnerServiceSMO complaintInnerServiceSMOImpl) {
-        this.complaintInnerServiceSMOImpl = complaintInnerServiceSMOImpl;
     }
 }

+ 51 - 0
service-store/src/main/java/com/java110/store/cmd/complaint/DeleteComplaintCmd.java

@@ -0,0 +1,51 @@
+package com.java110.store.cmd.complaint;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.complaint.ComplaintDto;
+import com.java110.intf.common.IComplaintUserInnerServiceSMO;
+import com.java110.intf.community.IComplaintV1InnerServiceSMO;
+import com.java110.po.complaint.ComplaintPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Java110Cmd(serviceCode = "complaint.deleteComplaint")
+public class DeleteComplaintCmd extends Cmd{
+
+    @Autowired
+    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
+
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+        ComplaintPo complaintPo = BeanConvertUtil.covertBean(reqJson, ComplaintPo.class);
+        int flag = complaintV1InnerServiceSMOImpl.deleteComplaint(complaintPo);
+        if (flag < 1) {
+            throw new CmdException("投诉不存在");
+        }
+
+
+        if(StringUtil.isEmpty(complaintPo.getTaskId())){
+            return ;
+        }
+        ComplaintDto complaintDto = new ComplaintDto();
+        complaintDto.setTaskId(complaintPo.getTaskId());
+        complaintUserInnerServiceSMOImpl.deleteTask(complaintDto);
+    }
+}

+ 10 - 41
service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java

@@ -1,10 +1,10 @@
-package com.java110.api.listener.complaint;
+package com.java110.store.cmd.complaint;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.listener.AbstractServiceApiListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
 import com.java110.dto.RoomDto;
 import com.java110.dto.complaint.ComplaintDto;
 import com.java110.dto.file.FileRelDto;
@@ -12,7 +12,7 @@ import com.java110.intf.common.IComplaintUserInnerServiceSMO;
 import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.store.IComplaintInnerServiceSMO;
-import com.java110.utils.constant.ServiceCodeComplaintConstant;
+import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.StringUtil;
@@ -20,19 +20,14 @@ import com.java110.vo.api.complaint.ApiComplaintDataVo;
 import com.java110.vo.api.complaint.ApiComplaintVo;
 import com.java110.vo.api.junkRequirement.PhotoVo;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
 import java.util.ArrayList;
 import java.util.List;
 
-
-/**
- * 查询小区侦听类
- */
-@Java110Listener("listComplaintsListener")
-public class ListComplaintsListener extends AbstractServiceApiListener {
+@Java110Cmd(serviceCode = "complaint.listComplaints")
+public class ListComplaintsCmd extends Cmd{
 
     @Autowired
     private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
@@ -46,39 +41,13 @@ public class ListComplaintsListener extends AbstractServiceApiListener {
     private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
 
     @Override
-    public String getServiceCode() {
-        return ServiceCodeComplaintConstant.LIST_COMPLAINTS;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.GET;
-    }
-
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-    public IComplaintInnerServiceSMO getComplaintInnerServiceSMOImpl() {
-        return complaintInnerServiceSMOImpl;
-    }
-
-    public void setComplaintInnerServiceSMOImpl(IComplaintInnerServiceSMO complaintInnerServiceSMOImpl) {
-        this.complaintInnerServiceSMOImpl = complaintInnerServiceSMOImpl;
-    }
-
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区信息");
         super.validatePageInfo(reqJson);
     }
 
     @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         ComplaintDto complaintDto = BeanConvertUtil.covertBean(reqJson, ComplaintDto.class);
 
         String roomId = reqJson.getString("roomId");

+ 38 - 49
service-api/src/main/java/com/java110/api/listener/complaint/SaveComplaintListener.java

@@ -1,34 +1,29 @@
-package com.java110.api.listener.complaint;
+package com.java110.store.cmd.complaint;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.complaint.IComplaintBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.complaint.ComplaintDto;
 import com.java110.dto.file.FileDto;
 import com.java110.intf.common.IComplaintUserInnerServiceSMO;
 import com.java110.intf.common.IFileInnerServiceSMO;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
+import com.java110.intf.community.IComplaintV1InnerServiceSMO;
+import com.java110.po.complaint.ComplaintPo;
 import com.java110.po.file.FileRelPo;
 import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.ServiceCodeComplaintConstant;
+import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
 
-/**
- * 保存小区侦听
- * add by wuxw 2019-06-30
- */
-@Java110Listener("saveComplaintListener")
-public class SaveComplaintListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IComplaintBMO complaintBMOImpl;
+@Java110Cmd(serviceCode = "complaint.saveComplaint")
+public class SaveComplaintCmd extends Cmd{
 
     @Autowired
     private IFileInnerServiceSMO fileInnerServiceSMOImpl;
@@ -36,10 +31,14 @@ public class SaveComplaintListener extends AbstractServiceApiPlusListener {
     @Autowired
     private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
 
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+    @Autowired
+    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
+
+    @Autowired
+    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
 
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
         Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择投诉类型");
         Assert.hasKeyAndValue(reqJson, "roomId", "必填,请选择房屋编号");
@@ -48,14 +47,20 @@ public class SaveComplaintListener extends AbstractServiceApiPlusListener {
         Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户信息");
         Assert.hasKeyAndValue(reqJson, "context", "必填,请填写投诉内容");
         Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区ID");
-
     }
 
     @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
 
         reqJson.put("startUserId", reqJson.getString("userId"));
-        complaintBMOImpl.addComplaint(reqJson, context);
+        reqJson.put("complaintId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_complaintId));
+        reqJson.put("state", "10001");
+        ComplaintPo complaintPo = BeanConvertUtil.covertBean(reqJson, ComplaintPo.class);
+        int flag = complaintV1InnerServiceSMOImpl.saveComplaint(complaintPo);
+        if(flag < 1){
+            throw new CmdException("投诉失败");
+        }
 
         if (reqJson.containsKey("photos") && reqJson.getJSONArray("photos").size() > 0) {
             JSONArray photos = reqJson.getJSONArray("photos");
@@ -80,37 +85,21 @@ public class SaveComplaintListener extends AbstractServiceApiPlusListener {
                 businessUnit.put("fileRealName", fileDto.getFileId());
                 businessUnit.put("fileSaveName", fileName);
                 FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
-                super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
+                fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
             }
         }
 
         //commit(context);
         ComplaintDto complaintDto = BeanConvertUtil.covertBean(reqJson, ComplaintDto.class);
         complaintDto.setCurrentUserId(reqJson.getString("userId"));
-        complaintUserInnerServiceSMOImpl.startProcess(complaintDto);
-
-    }
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeComplaintConstant.ADD_COMPLAINT;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-    public IComplaintUserInnerServiceSMO getComplaintUserInnerServiceSMOImpl() {
-        return complaintUserInnerServiceSMOImpl;
-    }
-
-    public void setComplaintUserInnerServiceSMOImpl(IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl) {
-        this.complaintUserInnerServiceSMOImpl = complaintUserInnerServiceSMOImpl;
+        complaintDto = complaintUserInnerServiceSMOImpl.startProcess(complaintDto);
+
+        //没有配置流程,直接设置为完成
+        if(complaintDto == null){
+             complaintPo = new ComplaintPo();
+             complaintPo.setComplaintId(reqJson.getString("complaintId"));
+             complaintPo.setState(ComplaintDto.STATE_FINISH);
+            complaintV1InnerServiceSMOImpl.updateComplaint(complaintPo);
+        }
     }
 }

+ 62 - 0
service-store/src/main/java/com/java110/store/cmd/complaint/UpdateComplaintCmd.java

@@ -0,0 +1,62 @@
+package com.java110.store.cmd.complaint;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.complaint.ComplaintDto;
+import com.java110.intf.community.IComplaintV1InnerServiceSMO;
+import com.java110.intf.store.IComplaintInnerServiceSMO;
+import com.java110.po.complaint.ComplaintPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+@Java110Cmd(serviceCode = "complaint.updateComplaint")
+public class UpdateComplaintCmd extends Cmd {
+
+    @Autowired
+    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
+
+    @Autowired
+    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
+        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
+        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择投诉类型");
+        //Assert.hasKeyAndValue(reqJson, "roomId", "必填,请选择房屋编号");
+        Assert.hasKeyAndValue(reqJson, "complaintName", "必填,请填写投诉人");
+        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写投诉电话");
+        //Assert.hasKeyAndValue(reqJson, "state", "必填,请填写投诉状态");
+        Assert.hasKeyAndValue(reqJson, "context", "必填,请填写投诉内容");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+
+        ComplaintDto complaintDto = new ComplaintDto();
+        complaintDto.setStoreId(reqJson.getString("storeId"));
+        complaintDto.setComplaintId(reqJson.getString("complaintId"));
+        List<ComplaintDto> complaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
+
+        Assert.listOnlyOne(complaintDtos, "存在多条记录,或不存在数据" + complaintDto.getComplaintId());
+
+
+        JSONObject businessComplaint = new JSONObject();
+        businessComplaint.putAll(reqJson);
+        businessComplaint.put("state", complaintDtos.get(0).getState());
+        businessComplaint.put("roomId", complaintDtos.get(0).getRoomId());
+        ComplaintPo complaintPo = BeanConvertUtil.covertBean(reqJson, ComplaintPo.class);
+        int flag = complaintV1InnerServiceSMOImpl.updateComplaint(complaintPo);
+        if(flag < 1){
+            throw new CmdException("修改投诉失败");
+        }
+    }
+}