SellRoomCmd.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package com.java110.community.cmd.room;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.annotation.Java110Cmd;
  4. import com.java110.core.context.ICmdDataFlowContext;
  5. import com.java110.core.event.cmd.Cmd;
  6. import com.java110.core.event.cmd.CmdEvent;
  7. import com.java110.core.factory.GenerateCodeFactory;
  8. import com.java110.doc.annotation.*;
  9. import com.java110.dto.owner.OwnerDto;
  10. import com.java110.intf.community.ICommunityInnerServiceSMO;
  11. import com.java110.intf.community.IRoomV1InnerServiceSMO;
  12. import com.java110.intf.community.IUnitInnerServiceSMO;
  13. import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
  14. import com.java110.intf.user.IOwnerV1InnerServiceSMO;
  15. import com.java110.po.owner.OwnerPo;
  16. import com.java110.po.owner.OwnerRoomRelPo;
  17. import com.java110.po.room.RoomPo;
  18. import com.java110.utils.constant.BusinessTypeConstant;
  19. import com.java110.utils.exception.CmdException;
  20. import com.java110.utils.util.Assert;
  21. import com.java110.utils.util.BeanConvertUtil;
  22. import com.java110.utils.util.DateUtil;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import java.text.ParseException;
  25. import java.util.List;
  26. @Java110CmdDoc(title = "业主房屋关系绑定",
  27. description = "对应后台 业主入驻房屋功能",
  28. httpMethod = "post",
  29. url = "http://{ip}:{port}/app/room.sellRoom",
  30. resource = "communityDoc",
  31. author = "吴学文",
  32. serviceCode = "room.sellRoom",
  33. seq = 18
  34. )
  35. @Java110ParamsDoc(params = {
  36. @Java110ParamDoc(name = "communityId", length = 30, remark = "小区ID"),
  37. @Java110ParamDoc(name = "roomId", length = 30, remark = "房屋ID"),
  38. @Java110ParamDoc(name = "state", length = 12, remark = "状态 2001\t已入住\t\n" +
  39. "2003\t已交房\t\n" +
  40. "2005\t已装修\t\n" +
  41. "2004\t未入住\t\n" +
  42. "2008\t空闲\n" +
  43. "2009\t装修中\t"),
  44. @Java110ParamDoc(name = "ownerId", length = 30, remark = "业主ID"),
  45. })
  46. @Java110ResponseDoc(
  47. params = {
  48. @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "返回编号,0 成功 其他失败"),
  49. @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"),
  50. }
  51. )
  52. @Java110ExampleDoc(
  53. reqBody = "{\n" +
  54. "\t\"ownerId\": 121231,\n" +
  55. "\t\"state\": \"2001\",\n" +
  56. "\t\"roomId\": \"123123\",\n" +
  57. "\t\"communityId\": \"2022121921870161\"\n" +
  58. "}",
  59. resBody = "{\"code\":0,\"msg\":\"成功\"}"
  60. )
  61. @Java110Cmd(serviceCode = "room.sellRoom")
  62. public class SellRoomCmd extends Cmd {
  63. @Autowired
  64. private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
  65. @Autowired
  66. private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
  67. @Autowired
  68. private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
  69. @Autowired
  70. private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
  71. @Autowired
  72. private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
  73. @Override
  74. public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
  75. Assert.jsonObjectHaveKey(reqJson, "communityId", "请求报文中未包含communityId节点");
  76. Assert.jsonObjectHaveKey(reqJson, "ownerId", "请求报文中未包含ownerId节点");
  77. Assert.jsonObjectHaveKey(reqJson, "roomId", "请求报文中未包含roomId节点");
  78. Assert.jsonObjectHaveKey(reqJson, "state", "请求报文中未包含state节点");
  79. // Assert.jsonObjectHaveKey(reqJson, "storeId", "请求报文中未包含storeId节点");
  80. Assert.hasLength(reqJson.getString("communityId"), "小区ID不能为空");
  81. Assert.hasLength(reqJson.getString("ownerId"), "ownerId不能为空");
  82. Assert.hasLength(reqJson.getString("roomId"), "roomId不能为空");
  83. Assert.hasLength(reqJson.getString("state"), "state不能为空");
  84. }
  85. @Override
  86. public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
  87. if (!reqJson.containsKey("startTime")) {
  88. reqJson.put("startTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
  89. }
  90. if (!reqJson.containsKey("endTime")) {
  91. reqJson.put("endTime", "2037-01-01 00:00:00");
  92. }
  93. //添加单元信息
  94. sellRoom(reqJson);
  95. //更新房屋信息为售出
  96. updateShellRoom(reqJson);
  97. //todo 修改业主信息,目的是触发databus 如果 业主房屋上费用的 业主名称 不正确 可以 刷一下
  98. updateOwner(reqJson);
  99. }
  100. /**
  101. * 售卖房屋信息
  102. *
  103. * @param paramInJson 接口调用放传入入参
  104. * @return 订单服务能够接受的报文
  105. */
  106. public void sellRoom(JSONObject paramInJson) {
  107. JSONObject businessUnit = new JSONObject();
  108. businessUnit.putAll(paramInJson);
  109. businessUnit.put("relId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_relId));
  110. businessUnit.put("userId", "-1");
  111. OwnerRoomRelPo ownerRoomRelPo = BeanConvertUtil.covertBean(businessUnit, OwnerRoomRelPo.class);
  112. int flag = ownerRoomRelV1InnerServiceSMOImpl.saveOwnerRoomRel(ownerRoomRelPo);
  113. if (flag < 1) {
  114. throw new CmdException("添加业主房屋关系");
  115. }
  116. }
  117. /**
  118. * 修改小区楼信息
  119. *
  120. * @param paramInJson 接口调用放传入入参
  121. * @return 订单服务能够接受的报文
  122. */
  123. public void updateShellRoom(JSONObject paramInJson) {
  124. JSONObject businessUnit = new JSONObject();
  125. businessUnit.putAll(paramInJson);
  126. businessUnit.put("userId", "-1");
  127. RoomPo roomPo = BeanConvertUtil.covertBean(businessUnit, RoomPo.class);
  128. int flag = roomV1InnerServiceSMOImpl.updateRoom(roomPo);
  129. if (flag < 1) {
  130. throw new CmdException("添加业主房屋关系");
  131. }
  132. }
  133. /**
  134. * 修改业主信息 目的是触发databus 如果 业主房屋上费用的 业主名称 不正确 可以 刷一下
  135. *
  136. * @param reqJson
  137. */
  138. private void updateOwner(JSONObject reqJson) {
  139. OwnerDto ownerDto = new OwnerDto();
  140. ownerDto.setMemberId(reqJson.getString("ownerId"));
  141. ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
  142. List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
  143. Assert.listOnlyOne(ownerDtos, "业主不存在");
  144. OwnerPo ownerPo = BeanConvertUtil.covertBean(ownerDtos.get(0), OwnerPo.class);
  145. ownerV1InnerServiceSMOImpl.updateOwner(ownerPo);
  146. }
  147. }