UserApiController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. package com.goafanti.user.controller;
  2. import java.io.IOException;
  3. import java.util.List;
  4. import java.util.UUID;
  5. import javax.annotation.Resource;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.validation.Valid;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.validation.BindingResult;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.multipart.MultipartFile;
  13. import com.goafanti.common.bo.Result;
  14. import com.goafanti.common.constant.ErrorConstants;
  15. import com.goafanti.common.controller.BaseApiController;
  16. import com.goafanti.common.model.OrganizationIdentity;
  17. import com.goafanti.common.model.OrganizationInfo;
  18. import com.goafanti.common.model.OrganizationTech;
  19. import com.goafanti.common.model.User;
  20. import com.goafanti.common.model.UserAbility;
  21. import com.goafanti.common.model.UserCareer;
  22. import com.goafanti.common.model.UserEdu;
  23. import com.goafanti.common.model.UserIdentity;
  24. import com.goafanti.common.model.UserInfo;
  25. import com.goafanti.common.utils.LoggerUtils;
  26. import com.goafanti.common.utils.PasswordUtil;
  27. import com.goafanti.core.shiro.token.TokenManager;
  28. import com.goafanti.user.bo.OrgIdentityBo;
  29. import com.goafanti.user.bo.UidAndTypeBo;
  30. import com.goafanti.user.bo.UserIdentityBo;
  31. import com.goafanti.user.bo.UserInfoBo;
  32. import com.goafanti.user.service.OrganizationIdentityService;
  33. import com.goafanti.user.service.OrganizationInfoService;
  34. import com.goafanti.user.service.OrganizationTechService;
  35. import com.goafanti.user.service.UserAbilityService;
  36. import com.goafanti.user.service.UserCareerService;
  37. import com.goafanti.user.service.UserEduService;
  38. import com.goafanti.user.service.UserIdentityService;
  39. import com.goafanti.user.service.UserInfoService;
  40. import com.goafanti.user.service.UserService;
  41. @Controller
  42. @RequestMapping(value = "/api/user")
  43. public class UserApiController extends BaseApiController {
  44. @Resource
  45. private UserService userService;
  46. @Resource(name = "passwordUtil")
  47. private PasswordUtil passwordUtil;
  48. @Resource
  49. private UserIdentityService userIdentityService;
  50. @Resource
  51. private UserInfoService userInfoService;
  52. @Resource
  53. private UserEduService userEduService;
  54. @Resource
  55. private UserCareerService userCareerService;
  56. @Resource
  57. private UserAbilityService userAbilityService;
  58. @Resource
  59. private OrganizationIdentityService organizationIdentityService;
  60. @Resource
  61. private OrganizationInfoService organizationInfoService;
  62. @Resource
  63. private OrganizationTechService organizationTechService;
  64. @RequestMapping(value = "/pwd", method = RequestMethod.POST)
  65. public Result updatePwd(String password, String newPassword) {
  66. Result res = new Result();
  67. if (password == null || newPassword == null) {
  68. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "密码"));
  69. }
  70. if (res.getError().isEmpty() && TokenManager.isLogin()) {
  71. User u = new User();
  72. User user = userService.selectByPrimaryKey(TokenManager.getUserId());
  73. u.setId(user.getId());
  74. u.setCreateTime(user.getCreateTime());
  75. u.setPassword(newPassword);
  76. u.setPassword(passwordUtil.getEncryptPwd(u));
  77. if (!user.getPassword().equals(passwordUtil.getEncryptPwd(password, user.getCreateTime()))) {
  78. res.getError().add(buildError(ErrorConstants.PWD_NOT_MATCH_ERROR));
  79. } else {
  80. res.setData(userService.updateByPrimaryKeySelective(u));
  81. }
  82. }
  83. return res;
  84. }
  85. /**
  86. * 个人会员基本信息
  87. * @param userIdentityBo
  88. * @param bindingResult
  89. * @return
  90. */
  91. @RequestMapping(value = "/basicinfo", method = RequestMethod.POST)
  92. public Result basicInfo(@Valid UserIdentityBo userIdentityBo,BindingResult bindingResult){
  93. Result res = new Result();
  94. if (bindingResult.hasErrors()) {
  95. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  96. bindingResult.getFieldError().getField()));
  97. return res;
  98. }
  99. if(res.getError().isEmpty()){
  100. UserIdentity userIdentity = new UserIdentity();
  101. UserIdentity identity= userIdentityService.selectUserIdentityByUserId(TokenManager.getUserId());
  102. userIdentity.setUsername(userIdentityBo.getUsername());
  103. userIdentity.setIdNumber(userIdentityBo.getIdNumber());
  104. userIdentity.setSex(userIdentityBo.getSex());
  105. userIdentity.setDateOfBirth(userIdentityBo.getDateOfBirth());
  106. userIdentity.setPositiveId(userIdentityBo.getPositiveId());
  107. userIdentity.setOppositeId(userIdentityBo.getOppositeId());
  108. if(identity == null){
  109. userIdentity.setId(UUID.randomUUID().toString());
  110. userIdentity.setUid(TokenManager.getUserId());
  111. userIdentityService.insert(userIdentity);
  112. }else{
  113. userIdentity.setId(identity.getId());
  114. userIdentityService.updateByPrimaryKeySelective(userIdentity);
  115. }
  116. }
  117. res.setData(userIdentityBo);
  118. return res;
  119. }
  120. /**
  121. * 个人资料
  122. * @param userInfoBo
  123. * @param bindingResult
  124. * @return
  125. */
  126. @RequestMapping(value = "/avatar/upload", method = RequestMethod.POST)
  127. public Result avatar(HttpServletRequest req) {
  128. Result res = new Result();
  129. res.setData(handleFile(res, "/avatar/", false, req));
  130. return res;
  131. }
  132. @RequestMapping(value = "/identity/upload", method = RequestMethod.POST)
  133. public Result identityFile(HttpServletRequest req) {
  134. Result res = new Result();
  135. res.setData(handleFile(res, "/identity/", true, req));
  136. return res;
  137. }
  138. private String handleFile(Result res, String path, boolean isPrivate, HttpServletRequest req) {
  139. List<MultipartFile> files = getFiles(req);
  140. String fileName = path + System.nanoTime() + ".jpg";
  141. if (!files.isEmpty()) {
  142. try {
  143. MultipartFile mf = files.get(0);
  144. mf.transferTo(isPrivate ? toPrivateFile(fileName) : toFile(fileName));
  145. LoggerUtils.debug(getClass(), fileName + " 文件上传成功");
  146. } catch (IllegalStateException | IOException e) {
  147. LoggerUtils.error(getClass(), "文件上传失败", e);
  148. res.getError().add(buildError("", "文件上传失败!"));
  149. return "";
  150. }
  151. } else {
  152. res.getError().add(buildError("", "文件上传失败!"));
  153. return "";
  154. }
  155. return fileName;
  156. }
  157. @RequestMapping(value = "/personaldata", method = RequestMethod.POST)
  158. public Result personalData(@Valid UserInfoBo userInfoBo,BindingResult bindingResult){
  159. Result res = new Result();
  160. if (bindingResult.hasErrors()) {
  161. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  162. bindingResult.getFieldError().getField()));
  163. return res;
  164. }
  165. if(res.getError().isEmpty()){
  166. UserInfo info= userInfoService.selectUserInfoByUserId(TokenManager.getUserId());
  167. User u =userService.selectByPrimaryKey(TokenManager.getUserId());
  168. u.setNickname(userInfoBo.getNickname());
  169. u.setEmail(userInfoBo.getEmail());
  170. userService.updateByPrimaryKeySelective(u);
  171. UserInfo userInfo = new UserInfo();
  172. userInfo.setResidence(userInfoBo.getResidence());
  173. userInfo.setPersonPortrait(userInfoBo.getPersonPortrait());
  174. userInfo.setPersonalProfile(userInfoBo.getPersonalProfile());
  175. userInfo.setLifePhoto(userInfoBo.getLifePhoto());
  176. userInfo.setFixedTel(userInfoBo.getFixedTel());
  177. userInfo.setQq(userInfoBo.getQq());
  178. userInfo.setPostalAddress(userInfoBo.getPostalAddress());
  179. userInfo.setPostcode(userInfoBo.getPostcode());
  180. if(info == null){
  181. userInfo.setId(UUID.randomUUID().toString());
  182. userInfo.setUid(TokenManager.getUserId());
  183. userInfoService.insert(userInfo);
  184. }else{
  185. userInfo.setId(info.getId());
  186. userInfoService.updateByPrimaryKeySelective(userInfo);
  187. }
  188. }
  189. res.setData(userInfoBo);
  190. return res;
  191. }
  192. /**
  193. * 个人会员教育信息
  194. * @param userEdu
  195. * @return
  196. */
  197. @RequestMapping(value = "/eduinfo", method = RequestMethod.POST)
  198. public Result educationInfo(UserEdu userEdu){
  199. Result res = new Result();
  200. UserEdu edu = userEduService.selectUserEduByUserId(TokenManager.getUserId());
  201. if(edu == null){
  202. userEdu.setId(UUID.randomUUID().toString());
  203. userEdu.setUid(TokenManager.getUserId());
  204. userEduService.insert(userEdu);
  205. }else{
  206. userEduService.updateByPrimaryKeySelective(userEdu);
  207. }
  208. res.setData(userEdu);
  209. return res;
  210. }
  211. /**
  212. * 个人会员职业信息
  213. * @param userCareer
  214. * @return
  215. */
  216. @RequestMapping(value = "/careerinfo", method = RequestMethod.POST)
  217. public Result careerInfo(UserCareer userCareer){
  218. Result res = new Result();
  219. UserCareer career = userCareerService.selectUserCareerByUserId(TokenManager.getUserId());
  220. if(career == null){
  221. userCareer.setId(UUID.randomUUID().toString());
  222. userCareer.setUid(TokenManager.getUserId());
  223. userCareerService.insert(userCareer);
  224. }else{
  225. userCareer.setId(career.getId());
  226. userCareerService.updateByPrimaryKeySelective(userCareer);
  227. }
  228. res.setData(userCareer);
  229. return res;
  230. }
  231. /**
  232. * 会员能力标签
  233. * @param userAbility
  234. * @return
  235. */
  236. @RequestMapping(value = "/abilitylabel", method = RequestMethod.POST)
  237. public Result abilityLabel(UserAbility userAbility){
  238. Result res = new Result();
  239. UserCareer ability = userAbilityService.selectUserAbilityByUserId(TokenManager.getUserId());
  240. if(ability == null){
  241. userAbility.setId(UUID.randomUUID().toString());
  242. userAbility.setUid(TokenManager.getUserId());
  243. userAbilityService.insert(userAbility);
  244. }else{
  245. userAbility.setId(ability.getId());
  246. userAbilityService.updateByPrimaryKeySelective(userAbility);
  247. }
  248. return res;
  249. }
  250. /**
  251. * 团体会员基本信息
  252. * @param orgIdentityBo
  253. * @return
  254. */
  255. @RequestMapping(value="/groupbasicinfo",method = RequestMethod.POST)
  256. public Result groupBasicInfo(OrgIdentityBo orgIdentityBo){
  257. Result res = new Result();
  258. OrganizationIdentity organizationIdentity = new OrganizationIdentity();
  259. OrganizationIdentity identity = organizationIdentityService.selectOrgIdentityByUserId(TokenManager.getUserId());
  260. User u =userService.selectByPrimaryKey(TokenManager.getUserId());
  261. u.setEmail(orgIdentityBo.getEmail());
  262. userService.updateByPrimaryKeySelective(u);
  263. organizationIdentity.setContacts(orgIdentityBo.getContacts());
  264. organizationIdentity.setFixedTel(orgIdentityBo.getFixedTel());
  265. organizationIdentity.setQq(orgIdentityBo.getQq());
  266. organizationIdentity.setPostalAddress(orgIdentityBo.getPostalAddress());
  267. organizationIdentity.setPostcode(orgIdentityBo.getPostcode());
  268. if(identity==null){
  269. organizationIdentity.setId(UUID.randomUUID().toString());
  270. organizationIdentity.setUid(TokenManager.getUserId());
  271. organizationIdentityService.insert(organizationIdentity);
  272. }else{
  273. organizationIdentity.setId(identity.getId());
  274. organizationIdentityService.updateByPrimaryKeySelective(organizationIdentity);
  275. }
  276. res.setData(orgIdentityBo);
  277. return res;
  278. }
  279. /**
  280. * 团体会员单位资料
  281. * @param orgInfo
  282. * @return
  283. */
  284. @RequestMapping(value="/unitdata",method = RequestMethod.POST)
  285. public Result groupBasicInfo(OrganizationInfo orgInfo){
  286. Result res = new Result();
  287. OrganizationInfo info = organizationInfoService.selectOrgInfoByUserId(TokenManager.getUserId());
  288. if(info == null){
  289. orgInfo.setId(UUID.randomUUID().toString());
  290. orgInfo.setUid(TokenManager.getUserId());
  291. organizationInfoService.insert(orgInfo);
  292. }else{
  293. orgInfo.setId(info.getId());
  294. organizationInfoService.updateByPrimaryKeySelective(orgInfo);
  295. }
  296. res.setData(orgInfo);
  297. return res;
  298. }
  299. /**
  300. * 团体会员技术能力
  301. * @param orgTech
  302. * @return
  303. */
  304. @RequestMapping(value="/tech",method = RequestMethod.POST)
  305. public Result tech(OrganizationTech orgTech){
  306. Result res = new Result();
  307. OrganizationTech tech = organizationTechService.selectOrgTechByUserId(TokenManager.getUserId());
  308. if(tech == null){
  309. orgTech.setId(UUID.randomUUID().toString());
  310. orgTech.setUid(TokenManager.getUserId());
  311. organizationTechService.insert(orgTech);
  312. }else{
  313. orgTech.setId(tech.getId());
  314. organizationTechService.updateByPrimaryKeySelective(orgTech);
  315. }
  316. return res;
  317. }
  318. @RequestMapping(value="/base",method = RequestMethod.POST)
  319. public Result basic(){
  320. Result res = new Result();
  321. UidAndTypeBo ub =basicInfo(userService);
  322. if(ub.getType()==0){
  323. UserIdentityBo u = userIdentityService.selectUserIdentityBoByUserId(ub.getUid());
  324. res.setData(u);
  325. }else{
  326. OrgIdentityBo o = organizationIdentityService.selectOrgIdentityBoByUserId(ub.getUid());
  327. res.setData(o);
  328. }
  329. return res;
  330. }
  331. @RequestMapping(value="/member",method = RequestMethod.POST)
  332. public Result member(){
  333. Result res = new Result();
  334. UidAndTypeBo ub =basicInfo(userService);
  335. if(ub.getType()==0){
  336. UserInfoBo u=userInfoService.selectUserInfoBoByUserId(ub.getUid());
  337. res.setData(u);
  338. }else{
  339. OrganizationInfo o = organizationInfoService.selectOrgInfoByUserId(ub.getUid());
  340. res.setData(o);
  341. }
  342. return res;
  343. }
  344. @RequestMapping(value="/educate",method = RequestMethod.POST)
  345. public Result educate(){
  346. Result res = new Result();
  347. UidAndTypeBo ub =basicInfo(userService);
  348. UserEdu u = userEduService.selectUserEduByUserId(ub.getUid());
  349. res.setData(u);
  350. return res;
  351. }
  352. @RequestMapping(value="/job",method = RequestMethod.POST)
  353. public Result job(){
  354. Result res = new Result();
  355. UidAndTypeBo ub =basicInfo(userService);
  356. if(ub.getType()==0){
  357. UserCareer u = userCareerService.selectUserCareerByUserId(ub.getUid());
  358. res.setData(u);
  359. }else{
  360. OrganizationTech o = organizationTechService.selectOrgTechByUserId(ub.getUid());
  361. res.setData(o);
  362. }
  363. return res;
  364. }
  365. @RequestMapping(value="/ability",method = RequestMethod.POST)
  366. public Result ability(){
  367. Result res = new Result();
  368. UidAndTypeBo ub =basicInfo(userService);
  369. UserCareer u = userAbilityService.selectUserAbilityByUserId(ub.getUid());
  370. res.setData(u);
  371. return res;
  372. }
  373. private static UidAndTypeBo basicInfo(UserService userService){
  374. User u = userService.selectByPrimaryKey(TokenManager.getUserId());
  375. UidAndTypeBo ub = new UidAndTypeBo();
  376. ub.setType(u.getType());
  377. ub.setUid(u.getId());
  378. return ub;
  379. }
  380. }