package com.java110.store.cmd.store; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; 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.account.AccountDto; import com.java110.dto.store.StoreDto; import com.java110.dto.workflow.WorkflowDto; import com.java110.intf.acct.IAccountInnerServiceSMO; import com.java110.intf.common.IWorkflowV1InnerServiceSMO; import com.java110.intf.community.ICommunityMemberV1InnerServiceSMO; import com.java110.intf.community.ICommunityV1InnerServiceSMO; import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO; import com.java110.intf.store.IStoreAttrV1InnerServiceSMO; import com.java110.intf.store.IStoreUserV1InnerServiceSMO; import com.java110.intf.store.IStoreV1InnerServiceSMO; import com.java110.intf.user.*; import com.java110.po.account.AccountPo; import com.java110.po.org.OrgPo; import com.java110.po.org.OrgStaffRelPo; import com.java110.po.privilegeUser.PrivilegeUserPo; import com.java110.po.store.StoreAttrPo; import com.java110.po.store.StorePo; import com.java110.po.store.StoreUserPo; import com.java110.po.workflow.WorkflowPo; import com.java110.utils.cache.MappingCache; import com.java110.utils.constant.MappingConstant; import com.java110.utils.constant.StoreTypeConstant; import com.java110.utils.constant.StoreUserRelConstant; 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.text.ParseException; @Java110Cmd(serviceCode = "save.store.info") public class SaveStoreInfoCmd extends Cmd { public static final String CODE_PREFIX_ID = "10"; @Autowired private IStoreV1InnerServiceSMO storeV1InnerServiceSMOImpl; @Autowired private IStoreAttrV1InnerServiceSMO storeAttrV1InnerServiceSMOImpl; @Autowired private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; @Autowired private IStoreUserV1InnerServiceSMO storeUserV1InnerServiceSMOImpl; @Autowired private IOrgV1InnerServiceSMO orgV1InnerServiceSMOImpl; @Autowired private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl; @Autowired private IWorkflowV1InnerServiceSMO workflowV1InnerServiceSMOImpl; @Autowired private IPrivilegeUserV1InnerServiceSMO privilegeUserV1InnerServiceSMOImpl; @Autowired private ICommunityMemberV1InnerServiceSMO communityMemberV1InnerServiceSMOImpl; @Autowired private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl; @Autowired private IMenuGroupV1InnerServiceSMO menuGroupV1InnerServiceSMOImpl; @Autowired private IMenuGroupCommunityV1InnerServiceSMO menuGroupCommunityV1InnerServiceSMOImpl; @Autowired private IAccountInnerServiceSMO accountInnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException { Assert.jsonObjectHaveKey(reqJson, StorePo.class.getSimpleName(), "请求参数中未包含businessStore 节点,请确认"); } @Override @Java110Transactional public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { addStore(reqJson); //添加员工 addStaff(reqJson); //添加公司级组织 addOrg(reqJson); //公司总部 addStaffOrg(reqJson); addPurchase(reqJson); //businesses.add(storeBMOImpl.addCollection(paramObj)); //物品领用 各个小区设置各自的流程 废弃次操作 contractApply(reqJson); contractChange(reqJson); //物品调拨流程 allocationStorehouse(reqJson); //新建账户 目前只有商家创建账户 JSONObject businessStoreObj = reqJson.getJSONObject(StorePo.class.getSimpleName()); if (StoreTypeConstant.STORE_TYPE_MALL.equals(businessStoreObj.getString("storeTypeCd"))) { //物品调拨流程 addAccount(reqJson, AccountDto.ACCT_TYPE_CASH); addAccount(reqJson, AccountDto.ACCT_TYPE_INTEGRAL); // businesses.add(storeBMOImpl.addAccount(paramObj,AccountDto.ACCT_TYPE_GOLD)); } //赋权 privilegeUserDefault(reqJson); } public void addAccount(JSONObject paramInJson, String acctType) { JSONObject businessStoreObj = paramInJson.getJSONObject(StorePo.class.getSimpleName()); AccountPo accountPo = new AccountPo(); accountPo.setAcctId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_acctId)); accountPo.setAcctName(businessStoreObj.getString("name")); accountPo.setAcctType(acctType); accountPo.setAmount("0"); accountPo.setObjId(paramInJson.getString("storeId")); accountPo.setObjType(AccountDto.OBJ_TYPE_STORE); int flag = accountInnerServiceSMOImpl.saveAccount(accountPo); if (flag < 1) { throw new CmdException("注册失败"); } } /** * 调拨审核 * * @param paramInJson * @return */ public void allocationStorehouse(JSONObject paramInJson) { WorkflowPo workflowPo = new WorkflowPo(); workflowPo.setCommunityId("9999"); //所有小区 workflowPo.setFlowId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); workflowPo.setFlowName("物品调拨"); workflowPo.setFlowType(WorkflowDto.FLOW_TYPE_ALLOCATION_STOREHOUSE); workflowPo.setSkipLevel(WorkflowDto.DEFAULT_SKIP_LEVEL); workflowPo.setStoreId(paramInJson.getString("storeId")); int flag = workflowV1InnerServiceSMOImpl.saveWorkflow(workflowPo); if (flag < 1) { throw new CmdException("注册失败"); } } /** * 合同变更 * * @param paramInJson * @return */ public void contractChange(JSONObject paramInJson) { WorkflowPo workflowPo = new WorkflowPo(); workflowPo.setCommunityId("9999"); //所有小区 workflowPo.setFlowId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); workflowPo.setFlowName("合同变更"); workflowPo.setFlowType(WorkflowDto.FLOW_TYPE_CONTRACT_CHANGE); workflowPo.setSkipLevel(WorkflowDto.DEFAULT_SKIP_LEVEL); workflowPo.setStoreId(paramInJson.getString("storeId")); int flag = workflowV1InnerServiceSMOImpl.saveWorkflow(workflowPo); if (flag < 1) { throw new CmdException("注册失败"); } } /** * 合同申请续签 * * @param paramInJson * @return */ public void contractApply(JSONObject paramInJson) { WorkflowPo workflowPo = new WorkflowPo(); workflowPo.setCommunityId("9999"); //所有小区 workflowPo.setFlowId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); workflowPo.setFlowName("合同申请续签"); workflowPo.setFlowType(WorkflowDto.FLOW_TYPE_CONTRACT_APPLY); workflowPo.setSkipLevel(WorkflowDto.DEFAULT_SKIP_LEVEL); workflowPo.setStoreId(paramInJson.getString("storeId")); int flag = workflowV1InnerServiceSMOImpl.saveWorkflow(workflowPo); if (flag < 1) { throw new CmdException("注册失败"); } } public void addPurchase(JSONObject paramInJson) { WorkflowPo workflowPo = new WorkflowPo(); workflowPo.setCommunityId("9999"); //所有小区 workflowPo.setFlowId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); workflowPo.setFlowName("采购流程"); workflowPo.setFlowType(WorkflowDto.FLOW_TYPE_PURCHASE); workflowPo.setSkipLevel(WorkflowDto.DEFAULT_SKIP_LEVEL); workflowPo.setStoreId(paramInJson.getString("storeId")); int flag = workflowV1InnerServiceSMOImpl.saveWorkflow(workflowPo); if (flag < 1) { throw new CmdException("注册失败"); } } public void addStaffOrg(JSONObject paramInJson) { JSONObject businessOrgStaffRel = new JSONObject(); businessOrgStaffRel.put("relId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_relId)); businessOrgStaffRel.put("storeId", paramInJson.getString("storeId")); businessOrgStaffRel.put("staffId", paramInJson.getJSONObject(StorePo.class.getSimpleName()).getString("userId")); businessOrgStaffRel.put("orgId", paramInJson.getString("levelOneOrgId")); businessOrgStaffRel.put("relCd", StoreUserRelConstant.REL_ADMIN); //计算 应收金额 OrgStaffRelPo orgStaffRelPo = BeanConvertUtil.covertBean(businessOrgStaffRel, OrgStaffRelPo.class); int flag = orgStaffRelV1InnerServiceSMOImpl.saveOrgStaffRel(orgStaffRelPo); if (flag < 1) { throw new CmdException("注册失败"); } } /** * 添加一级组织信息 * * @param paramInJson 接口调用放传入入参 * @return 订单服务能够接受的报文 */ public void addOrg(JSONObject paramInJson) { String orgId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orgId); paramInJson.put("levelOneOrgId", orgId); JSONObject businessOrg = new JSONObject(); businessOrg.put("orgName", paramInJson.getJSONObject(StorePo.class.getSimpleName()).getString("name")); businessOrg.put("orgLevel", "1"); businessOrg.put("parentOrgId", orgId); businessOrg.put("belongCommunityId", "9999"); businessOrg.put("orgId", orgId); businessOrg.put("allowOperation", "F"); businessOrg.put("storeId", paramInJson.getString("storeId")); //计算 应收金额 OrgPo orgPo = BeanConvertUtil.covertBean(businessOrg, OrgPo.class); int flag = orgV1InnerServiceSMOImpl.saveOrg(orgPo); if (flag < 1) { throw new CmdException("注册失败"); } } /** * 添加商户 * * @param paramInJson * @return */ public void addStore(JSONObject paramInJson) { int flag = 0; String storeId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_storeId); paramInJson.put("storeId", storeId); if (paramInJson.containsKey(StorePo.class.getSimpleName())) { JSONObject businessStoreObj = paramInJson.getJSONObject(StorePo.class.getSimpleName()); businessStoreObj.put("storeId", storeId); if (!businessStoreObj.containsKey("password")) { String staffDefaultPassword = MappingCache.getValue(MappingConstant.KEY_STAFF_DEFAULT_PASSWORD); Assert.hasLength(staffDefaultPassword, "映射表中未设置员工默认密码,请检查" + MappingConstant.KEY_STAFF_DEFAULT_PASSWORD); businessStoreObj.put("password", staffDefaultPassword); } if (!businessStoreObj.containsKey("mapX")) { businessStoreObj.put("mapX", ""); } if (!businessStoreObj.containsKey("mapY")) { businessStoreObj.put("mapY", ""); } StorePo storePo = BeanConvertUtil.covertBean(businessStoreObj, StorePo.class); storePo.setState(StoreDto.STATE_NORMAL); flag = storeV1InnerServiceSMOImpl.saveStore(storePo); if (flag < 1) { throw new CmdException("保存数据失败"); } } if (paramInJson.containsKey(StoreAttrPo.class.getSimpleName())) { JSONArray attrs = paramInJson.getJSONArray(StoreAttrPo.class.getSimpleName()); for (int businessStoreAttrIndex = 0; businessStoreAttrIndex < attrs.size(); businessStoreAttrIndex++) { JSONObject attr = attrs.getJSONObject(businessStoreAttrIndex); attr.put("storeId", storeId); attr.put("attrId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); StoreAttrPo storeAttrPo = BeanConvertUtil.covertBean(attr, StoreAttrPo.class); flag = storeAttrV1InnerServiceSMOImpl.saveStoreAttr(storeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } } } } /** * 添加员工 * * @param paramInJson * @return */ public void addStaff(JSONObject paramInJson) { JSONObject businessStoreUser = new JSONObject(); businessStoreUser.put("storeId", paramInJson.getString("storeId")); businessStoreUser.put("storeUserId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_storeUserId)); businessStoreUser.put("userId", paramInJson.getJSONObject(StorePo.class.getSimpleName()).getString("userId")); businessStoreUser.put("relCd", StoreUserRelConstant.REL_ADMIN); StoreUserPo storeUserPo = BeanConvertUtil.covertBean(businessStoreUser, StoreUserPo.class); int flag = storeUserV1InnerServiceSMOImpl.saveStoreUser(storeUserPo); if (flag < 1) { throw new CmdException("注册失败"); } } /** * 用户赋权 * * @return */ private void privilegeUserDefault(JSONObject paramObj) { String defaultPrivilege = MappingCache.getValue(MappingConstant.DOMAIN_DEFAULT_PRIVILEGE_ADMIN, paramObj.getJSONObject(StorePo.class.getSimpleName()).getString("storeTypeCd")); Assert.hasLength(defaultPrivilege, "未配置默认权限"); PrivilegeUserPo privilegeUserPo = new PrivilegeUserPo(); privilegeUserPo.setPrivilegeFlag("1"); privilegeUserPo.setStoreId(paramObj.getString("storeId")); privilegeUserPo.setUserId(paramObj.getJSONObject(StorePo.class.getSimpleName()).getString("userId")); privilegeUserPo.setpId(defaultPrivilege); privilegeUserPo.setPuId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); int flag = privilegeUserV1InnerServiceSMOImpl.savePrivilegeUser(privilegeUserPo); if (flag < 1) { throw new CmdException("注册失败"); } } }