AdminApiController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. package com.goafanti.admin.controller;
  2. import java.text.ParseException;
  3. import java.util.Calendar;
  4. import java.util.UUID;
  5. import javax.annotation.Resource;
  6. import javax.validation.Valid;
  7. import org.springframework.beans.BeanUtils;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.validation.BindingResult;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import com.goafanti.admin.bo.InputAdmin;
  14. import com.goafanti.admin.service.AdminService;
  15. import com.goafanti.common.bo.Result;
  16. import com.goafanti.common.constant.AFTConstants;
  17. import com.goafanti.common.constant.ErrorConstants;
  18. import com.goafanti.common.controller.CertifyApiController;
  19. import com.goafanti.common.enums.AchievementAuditStatus;
  20. import com.goafanti.common.enums.AdminFields;
  21. import com.goafanti.common.enums.CertifySubmitType;
  22. import com.goafanti.common.enums.IdentityAuditStatus;
  23. import com.goafanti.common.enums.IdentityProcess;
  24. import com.goafanti.common.enums.OrganizationIdentityFields;
  25. import com.goafanti.common.enums.UserFields;
  26. import com.goafanti.common.enums.UserIdentityFields;
  27. import com.goafanti.common.enums.UserLevel;
  28. import com.goafanti.common.model.Admin;
  29. import com.goafanti.common.model.OrganizationIdentity;
  30. import com.goafanti.common.model.User;
  31. import com.goafanti.common.model.UserIdentity;
  32. import com.goafanti.common.utils.DateUtils;
  33. import com.goafanti.common.utils.PasswordUtil;
  34. import com.goafanti.common.utils.StringUtils;
  35. import com.goafanti.core.shiro.token.TokenManager;
  36. import com.goafanti.easemob.EasemobUtils;
  37. import com.goafanti.user.bo.InputOrganizationIdentity;
  38. import com.goafanti.user.bo.InputUser;
  39. import com.goafanti.user.bo.InputUserIdentity;
  40. import com.goafanti.user.service.JpushEasemobAccountService;
  41. import com.goafanti.user.service.OrganizationIdentityService;
  42. import com.goafanti.user.service.UserIdentityService;
  43. import com.goafanti.user.service.UserService;
  44. @Controller
  45. @RequestMapping(value = "/api/admin")
  46. public class AdminApiController extends CertifyApiController {
  47. @Resource
  48. private UserService userService;
  49. @Resource
  50. private UserIdentityService userIdentityService;
  51. @Resource
  52. private OrganizationIdentityService organizationIdentityService;
  53. @Resource(name = "passwordUtil")
  54. private PasswordUtil passwordUtil;
  55. @Resource
  56. private AdminService adminService;
  57. @Resource
  58. private JpushEasemobAccountService jpushEasemobAccountService;
  59. @Autowired
  60. EasemobUtils easemobUtils;
  61. /**
  62. * 获取营销员及营销经理下拉
  63. */
  64. @RequestMapping(value = "/salesman", method = RequestMethod.GET)
  65. public Result getSalesMan() {
  66. Result res = new Result();
  67. res.setData(adminService.selectSalesman());
  68. return res;
  69. }
  70. /**
  71. * 管理员角色
  72. */
  73. @RequestMapping(value = "/role", method = RequestMethod.GET)
  74. public Result getRole(String uid) {
  75. Result res = new Result();
  76. if (StringUtils.isBlank(uid)) {
  77. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "管理员ID"));
  78. return res;
  79. }
  80. res.setData(adminService.selectRoleByPrimaryKey(uid));
  81. return res;
  82. }
  83. /**
  84. * 管理员本人信息详情
  85. */
  86. @RequestMapping(value = "/adminInfo", method = RequestMethod.GET)
  87. public Result adminInfo() {
  88. Result res = new Result();
  89. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  90. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "超级管理员"));
  91. return res;
  92. }
  93. res.setData(adminService.selectByPrimaryKey(TokenManager.getAdminId()));
  94. return res;
  95. }
  96. /**
  97. * 管理员修改本人信息
  98. */
  99. @RequestMapping(value = "/updateAdminInfo", method = RequestMethod.POST)
  100. public Result updateAdminInfo(@Valid InputAdmin admin, String pwd, BindingResult bindingResult) {
  101. Result res = new Result();
  102. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  103. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "超级管理员"));
  104. return res;
  105. }
  106. if (bindingResult.hasErrors()) {
  107. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  108. AdminFields.getFieldDesc(bindingResult.getFieldError().getField())));
  109. return res;
  110. }
  111. if (StringUtils.isBlank(admin.getId())) {
  112. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  113. return res;
  114. }
  115. if (StringUtils.isBlank(admin.getMobile())) {
  116. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号"));
  117. return res;
  118. }
  119. if (StringUtils.isBlank(admin.getName())) {
  120. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名"));
  121. return res;
  122. }
  123. Admin a = adminService.selectByMobile(admin.getMobile().trim(),null);
  124. if (!TokenManager.getAdminId().equals(a.getId())) {
  125. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
  126. return res;
  127. }
  128. Admin ad = new Admin();
  129. BeanUtils.copyProperties(admin, ad);
  130. Admin aa = adminService.selectByPrimaryKey(TokenManager.getAdminId());
  131. ad.setMobile(ad.getMobile().trim());
  132. ad.setCreateTime(aa.getCreateTime());
  133. if (!StringUtils.isBlank(ad.getPassword())) {
  134. if (StringUtils.isBlank(pwd)) {
  135. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "原密码"));
  136. return res;
  137. }
  138. if (!aa.getPassword().equals(passwordUtil.getEncryptPwd(pwd, aa.getCreateTime()))) {
  139. res.getError().add(buildError(ErrorConstants.PWD_NOT_MATCH_ERROR, "", "原密码"));
  140. return res;
  141. }
  142. } else {
  143. ad.setPassword(aa.getPassword());
  144. }
  145. ad.setPassword(passwordUtil.getEncryptPwd(ad));
  146. res.setData(adminService.updateByPrimaryKey(ad));
  147. return res;
  148. }
  149. /**
  150. * 新增用户
  151. */
  152. @RequestMapping(value = "/addNewUser", method = RequestMethod.POST)
  153. public Result addNewUser(@Valid InputUser inputUser, BindingResult bindingResult) {
  154. Result res = new Result();
  155. if (bindingResult.hasErrors()) {
  156. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  157. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  158. return res;
  159. }
  160. if (StringUtils.isBlank(inputUser.getMobile())) {
  161. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "mobile", "mobile"));
  162. return res;
  163. }
  164. User user = userService.selectByMobieAndType(inputUser.getMobile().trim(), null);
  165. if (null != user) {
  166. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
  167. return res;
  168. }
  169. User u = new User();
  170. u.setId(UUID.randomUUID().toString());
  171. u.setMobile(inputUser.getMobile().trim());
  172. u.setPassword(inputUser.getMobile().trim());
  173. Calendar now = Calendar.getInstance();
  174. now.set(Calendar.MILLISECOND, 0);
  175. u.setCreateTime(now.getTime());
  176. u.setPassword(passwordUtil.getEncryptPwd(u));
  177. u.setLvl(UserLevel.GENERAL.getCode());
  178. u.setAid(TokenManager.getAdminId());
  179. userService.insertRegister(u,inputUser.getUnitName(), inputUser.getUsername());
  180. return res;
  181. }
  182. /**
  183. * 个人用户信息明细
  184. */
  185. @RequestMapping(value = "/userDetail", method = RequestMethod.POST)
  186. public Result userDetail(String uid) {
  187. Result res = new Result();
  188. if (StringUtils.isBlank(uid)) {
  189. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  190. return res;
  191. }
  192. res.setData(userIdentityService.selectUserIdentityByUserIdAdmin(uid));
  193. return res;
  194. }
  195. /**
  196. * 修改个人用户信息
  197. */
  198. @RequestMapping(value = "/updateUserDetail", method = RequestMethod.POST)
  199. public Result updateUserDetail(@Valid InputUserIdentity userIdentity, BindingResult bindingResult,
  200. String paymentDateFormattedDate, String saveSign) {
  201. Result res = new Result();
  202. if (bindingResult.hasErrors()) {
  203. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  204. UserIdentityFields.getFieldDesc(bindingResult.getFieldError().getField())));
  205. return res;
  206. }
  207. if (StringUtils.isBlank(userIdentity.getId())) {
  208. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到认证ID", "认证ID"));
  209. return res;
  210. }
  211. if (StringUtils.isBlank(userIdentity.getUid())) {
  212. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  213. return res;
  214. }
  215. if (StringUtils.isBlank(saveSign)) {
  216. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到保存提交方式", "保存提交方式"));
  217. return res;
  218. }
  219. UserIdentity idd = userIdentityService.selectUserIdentityByUserId(userIdentity.getUid());
  220. if (IdentityAuditStatus.COMMITTED.getCode().equals(idd.getAuditStatus())) {
  221. res.getError().add(buildError("", "审核中,无法保存或提交!"));
  222. return res;
  223. }
  224. Integer level = userIdentity.getLevel();
  225. if (!UserLevel.GENERAL.getCode().equals(level)) {
  226. User u = userService.selectByPrimaryKey(userIdentity.getUid());
  227. if (UserLevel.GENERAL.getCode().equals(u.getLvl())) {
  228. res.getError().add(buildError(ErrorConstants.NON_CERTIFIED, "未通过实名认证,无法操作!"));
  229. return res;
  230. }
  231. }
  232. if (!saveSign.equals(CertifySubmitType.SAVE.getCode())
  233. && !saveSign.equals(CertifySubmitType.SUBMIT.getCode())) {
  234. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "保存提交方式"));
  235. return res;
  236. }
  237. if (!StringUtils.isBlank(paymentDateFormattedDate)) {
  238. try {
  239. userIdentity.setPaymentDate(DateUtils.parseDate(paymentDateFormattedDate, AFTConstants.YYYYMMDD));
  240. } catch (ParseException e) {
  241. }
  242. }
  243. UserIdentity ui = new UserIdentity();
  244. BeanUtils.copyProperties(userIdentity, ui);
  245. if (CertifySubmitType.SUBMIT.getCode().equals(saveSign)) {
  246. User u = userService.selectByPrimaryKey(userIdentity.getUid());
  247. if (!UserLevel.GENERAL.getCode().equals(u.getLvl())) {
  248. res.getError().add(buildError("", "已通过实名认证,无法操作!"));
  249. return res;
  250. }
  251. ui.setProcess(IdentityProcess.COMMITTED.getCode());
  252. ui.setAuditStatus(IdentityAuditStatus.COMMITTED.getCode());
  253. }
  254. res.setData(userIdentityService.updateUserDetail(ui, saveSign, level));
  255. return res;
  256. }
  257. /**
  258. * 团体用户明细
  259. */
  260. @RequestMapping(value = "/orgDetail", method = RequestMethod.POST)
  261. public Result orgDetail(String uid) {
  262. Result res = new Result();
  263. if (StringUtils.isBlank(uid)) {
  264. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  265. return res;
  266. }
  267. //res.setData(organizationIdentityService.selectOrgIdentityDetailByUserIdAdmin(uid));
  268. return res;
  269. }
  270. /**
  271. * 修改团体用户信息
  272. */
  273. @RequestMapping(value = "/updateOrgDetail", method = RequestMethod.POST)
  274. public Result updateOrgDetail(@Valid InputOrganizationIdentity orgIdentity, BindingResult bindingResult,
  275. String paymentDateFormattedDate, String saveSign) {
  276. Result res = new Result();
  277. if (bindingResult.hasErrors()) {
  278. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  279. OrganizationIdentityFields.getFieldDesc(bindingResult.getFieldError().getField())));
  280. return res;
  281. }
  282. if (StringUtils.isBlank(orgIdentity.getUid())) {
  283. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
  284. return res;
  285. }
  286. if (StringUtils.isBlank(saveSign)) {
  287. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到保存提交方式", "保存提交方式"));
  288. return res;
  289. }
  290. if (!saveSign.equals(CertifySubmitType.SAVE.getCode())
  291. && !saveSign.equals(CertifySubmitType.SUBMIT.getCode())) {
  292. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "保存提交方式"));
  293. return res;
  294. }
  295. OrganizationIdentity idd = organizationIdentityService.selectOrgIdentityByUserId(orgIdentity.getUid());
  296. if (IdentityAuditStatus.COMMITTED.getCode().equals(idd.getAuditStatus())) {
  297. res.getError().add(buildError("", "审核中,无法保存或提交!"));
  298. return res;
  299. }
  300. Integer level = orgIdentity.getLevel();
  301. if (!UserLevel.GENERAL.getCode().equals(level)) {
  302. User u = userService.selectByPrimaryKey(orgIdentity.getUid());
  303. if (UserLevel.GENERAL.getCode().equals(u.getLvl())) {
  304. res.getError().add(buildError(ErrorConstants.NON_CERTIFIED, "未通过实名认证,无法操作!"));
  305. return res;
  306. }
  307. }
  308. if (!StringUtils.isBlank(paymentDateFormattedDate)) {
  309. try {
  310. orgIdentity.setPaymentDate(DateUtils.parseDate(paymentDateFormattedDate, AFTConstants.YYYYMMDD));
  311. } catch (ParseException e) {
  312. }
  313. }
  314. OrganizationIdentity oi = new OrganizationIdentity();
  315. BeanUtils.copyProperties(orgIdentity, oi);
  316. if (orgIdentity.getRegisteredCapital() != null) {
  317. oi.setRegisteredCapital(orgIdentity.getRegisteredCapital());
  318. }
  319. if (CertifySubmitType.SUBMIT.getCode().equals(saveSign)) {
  320. User u = userService.selectByPrimaryKey(oi.getUid());
  321. if (!UserLevel.GENERAL.getCode().equals(u.getLvl())) {
  322. res.getError().add(buildError("", "已通过实名认证,无法操作!"));
  323. return res;
  324. }
  325. oi.setProcess(IdentityProcess.COMMITTED.getCode());
  326. oi.setAuditStatus(IdentityAuditStatus.COMMITTED.getCode());
  327. }
  328. //res.setData(organizationIdentityService.updateOrgDetail(oi, saveSign, level));
  329. return res;
  330. }
  331. /**
  332. * 团体用户明细
  333. *
  334. * type 0-个人 1-单位
  335. */
  336. @RequestMapping(value = "/listJpushUser", method = RequestMethod.GET)
  337. public Result getJpushUser(Integer type,Integer pageNo,Integer pageSize) {
  338. Result res = new Result();
  339. if(type==null ||(type!=0 && type !=1)) {
  340. res.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","类型错误"));
  341. return res;
  342. }
  343. res.setData(jpushEasemobAccountService.findJpushClientsByType(type, pageNo, pageSize));
  344. return res;
  345. }
  346. //获得专家顾问审核数据
  347. @RequestMapping(value="/getExpertAuditList", method = RequestMethod.GET )
  348. public Result getExpertAuditList(InputUserIdentity identity, Integer pageNo, Integer pageSize){
  349. Result res = new Result();
  350. res.setData(userIdentityService.getExpertAuditList(identity, pageNo, pageSize));
  351. return res;
  352. }
  353. //获得某个人认证的详情信息
  354. @RequestMapping(value="/getUserIdentityByUid" , method = RequestMethod.GET)
  355. public Result getUserIdentityByUid(String uid){
  356. Result res = new Result();
  357. res.setData(userIdentityService.getUserIdentityByUid(uid));
  358. return res;
  359. }
  360. //管理员更改审核状态
  361. @RequestMapping(value="/auditing", method = RequestMethod.POST)
  362. public Result auditing(UserIdentity identity){
  363. Result res = new Result();
  364. if(AchievementAuditStatus.UNAUDITED.getCode().intValue() == identity.getAuditStatus() && null == identity.getAuditInfo()){
  365. res.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","审核不通过时必须填写原因"));
  366. }
  367. res.setData(userIdentityService.updateAuditing(identity));
  368. return res;
  369. }
  370. }