CompanyService.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package com.dk.mdm.service.mst;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.dk.common.exception.BaseBusinessException;
  4. import com.dk.common.infrastructure.annotaiton.Pagination;
  5. import com.dk.common.infrastructure.constant.Constant;
  6. import com.dk.common.infrastructure.enums.ErrorCodeEnum;
  7. import com.dk.common.model.pojo.PageList;
  8. import com.dk.common.model.pojo.link.CompanyLink;
  9. import com.dk.common.model.pojo.link.LinkApi;
  10. import com.dk.common.model.response.mst.OrgResponse;
  11. import com.dk.common.model.response.mst.StaffResponse;
  12. import com.dk.common.model.vo.mst.OrgVO;
  13. import com.dk.common.model.vo.mst.StaffVO;
  14. import com.dk.common.response.ResponseCodeEnum;
  15. import com.dk.common.response.ResponseResultUtil;
  16. import com.dk.common.response.ResponseResultVO;
  17. import com.dk.common.util.HaipHttpUtils;
  18. import com.dk.mdm.mapper.mst.OrgMapper;
  19. import com.dk.mdm.mapper.mst.UserMapper;
  20. import com.dk.mdm.mapper.mst.WxUserMapper;
  21. import com.dk.mdm.model.pojo.mst.Company;
  22. import com.dk.mdm.mapper.mst.CompanyMapper;
  23. import com.dk.common.service.BaseService;
  24. import com.dk.common.mapper.BaseMapper;
  25. import com.dk.mdm.model.pojo.mst.Org;
  26. import com.dk.mdm.model.pojo.mst.WxUser;
  27. import com.dk.mdm.model.query.mst.CompanyQuery;
  28. import com.dk.mdm.model.response.mst.CompanyResponse;
  29. import org.apache.commons.collections4.CollectionUtils;
  30. import org.springframework.http.HttpEntity;
  31. import org.springframework.http.HttpHeaders;
  32. import org.springframework.http.HttpMethod;
  33. import org.springframework.http.ResponseEntity;
  34. import org.springframework.stereotype.Service;
  35. import org.springframework.beans.factory.annotation.Autowired;
  36. import org.springframework.transaction.annotation.Transactional;
  37. import org.springframework.web.client.RestTemplate;
  38. import org.springframework.web.context.request.RequestContextHolder;
  39. import org.springframework.web.context.request.ServletRequestAttributes;
  40. import javax.annotation.Resource;
  41. import javax.servlet.http.HttpServletRequest;
  42. import java.util.ArrayList;
  43. import java.util.HashMap;
  44. import java.util.List;
  45. import java.util.Map;
  46. @Service
  47. @Transactional
  48. public class CompanyService extends BaseService<Company> {
  49. @Override
  50. public BaseMapper<Company> getRepository() {
  51. return companyMapper;
  52. }
  53. @Autowired
  54. private CompanyMapper companyMapper;
  55. @Autowired
  56. private WxUserMapper wxuserMapper;
  57. @Resource
  58. private HaipHttpUtils haipHttpUtils;
  59. /**
  60. * @desc : 重写主键
  61. * @author : 常皓宁
  62. * @date : 2024/2/29 20:29
  63. */
  64. @Override
  65. public String getPrimaryKey() {
  66. return "cp_id";
  67. }
  68. /**
  69. * @desc : 查询
  70. * @author : 常皓宁
  71. * @date : 2023/1/5 9:39
  72. */
  73. @Pagination
  74. public ResponseResultVO<PageList<CompanyResponse>> selectByCond(CompanyQuery companyQuery) {
  75. return super.mergeListWithCount(companyQuery, companyMapper.selectByCond(companyQuery),
  76. companyMapper.countByCond(companyQuery));
  77. }
  78. /**
  79. * @desc : 新建商户
  80. * @author : 常皓宁
  81. * @date : 2024/4/30 10:19
  82. */
  83. @Transactional(rollbackFor = Exception.class)
  84. public ResponseResultVO insertCompany(Company company) {
  85. Company c = new Company();
  86. c.setFlgValid(true);
  87. c.setCpName(company.getCpName());
  88. Long aLong = companyMapper.countByCond(c);
  89. if (aLong > 0) {
  90. return ResponseResultUtil.error(ErrorCodeEnum.COMPANY_CODE_EXISTS.getCode(),
  91. ErrorCodeEnum.COMPANY_CODE_EXISTS.getMessage());
  92. }
  93. if ("PRO".equals(company.getGradeCode())){
  94. company.setCurStaffNum(100);
  95. company.setMaxStaffNum(100);
  96. company.setCpStatus("公司状态-待审");
  97. }else {
  98. company.setCurStaffNum(10);
  99. company.setMaxStaffNum(10);
  100. company.setCpStatus("公司状态-通过");
  101. }
  102. //获取具体服务的地址
  103. company.setSvcCode(companyMapper.selectServiceAllot(company.getGradeCode()));
  104. companyMapper.insert(company);
  105. // 动态设置服务的地址
  106. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
  107. .getRequestAttributes();
  108. HttpServletRequest request;
  109. if (attributes != null) {
  110. request = attributes.getRequest();
  111. request.setAttribute("svcCode", company.getSvcCode().replace("_", "-"));
  112. }
  113. //调用外部接口
  114. return this.insertDkicOrg(company);
  115. }
  116. /**
  117. * @desc : 新建业务端组织机构和业务员
  118. * @author : 常皓宁
  119. * @date : 2024/4/30 13:02
  120. */
  121. @Transactional(rollbackFor = {Exception.class})
  122. public ResponseResultVO<Object> insertDkicOrg(Company company) {
  123. // 设置请求地址
  124. String requestUrl = "http://192.168.1.24:7001/" + Constant.MDM_PREFIX + Constant.SERVER + "-" + company.getSvcCode() + Constant.MST_ORG + "/insert_feign_org";
  125. OrgVO orgVO = new OrgVO();
  126. orgVO.setCpId(company.getCpId());
  127. orgVO.setOrgName(company.getCpName());
  128. OrgResponse orgResponse = new OrgResponse();
  129. JSONObject OrgJsonObject = haipHttpUtils.doPostRequest(requestUrl, orgVO);
  130. if (OrgJsonObject.get("code") == null || !ResponseCodeEnum.SUCCESS.getCode().equals(OrgJsonObject.get("code"))) {
  131. // 无用户
  132. throw new BaseBusinessException(ErrorCodeEnum.COMPANY_REGISTER_ERROR.getCode(),
  133. ErrorCodeEnum.COMPANY_REGISTER_ERROR.getMessage());
  134. } else {
  135. Object data = OrgJsonObject.get("data");
  136. orgResponse = JSONObject.parseObject(JSONObject.toJSONString(data),OrgResponse.class);
  137. }
  138. //新建微信用户
  139. WxUser wxUser = wxuserMapper.getByPhone(company.getCpPhone());
  140. WxUser newWxUser = new WxUser();
  141. if (wxUser == null) {
  142. //注册
  143. List<Integer> joinedCps = new ArrayList<>();
  144. joinedCps.add(company.getCpId());
  145. newWxUser.setCurrentCp(company.getCpId());
  146. newWxUser.setJoinedCps(joinedCps);
  147. newWxUser.setUserName(company.getCpManager());
  148. newWxUser.setUserPhone(company.getCpPhone());
  149. wxuserMapper.insert(newWxUser);
  150. } else {
  151. // 更新 户用户的公司id
  152. Integer cpId = company.getCpId();
  153. List<Integer> cpIds = new ArrayList<>();
  154. cpIds.add(cpId);
  155. if (wxUser.getJoinedCps()!=null && wxUser.getJoinedCps().size() > 0){
  156. cpIds.addAll(wxUser.getJoinedCps()) ;
  157. }
  158. wxuserMapper.updateCpid(wxUser.getUserId(), cpId, cpIds);
  159. }
  160. // 生成员工
  161. StaffVO staffVO = new StaffVO();
  162. //TODO: 获取新建或者更新的ID 得想想怎么弄
  163. staffVO.setWxUserId(wxUser.getUserId());
  164. staffVO.setCpId(company.getCpId());
  165. staffVO.setStaffName(company.getCpManager());
  166. staffVO.setStaffPhone(company.getCpPhone());
  167. staffVO.setOrgId(orgResponse.getOrgId());
  168. // 注册商户时候插入员工
  169. StaffResponse staffResponse = new StaffResponse();
  170. JSONObject staffJsonObject = haipHttpUtils.doPostRequest(requestUrl, staffVO);
  171. // 如果没有成功返回,状态设置为待审
  172. if (staffJsonObject.get("code") == null || !ResponseCodeEnum.SUCCESS.getCode().equals(staffJsonObject.get("code"))) {
  173. // 无用户
  174. throw new BaseBusinessException(ErrorCodeEnum.USER_REGISTER_ERROR.getCode(),
  175. ErrorCodeEnum.USER_REGISTER_ERROR.getMessage());
  176. } else {
  177. Object data = staffJsonObject.get("data");
  178. staffResponse = JSONObject.parseObject(JSONObject.toJSONString(data),StaffResponse.class);
  179. }
  180. // 生成员工权限 角色 仓库 等等。
  181. return ResponseResultUtil.success(company);
  182. }
  183. }