StaffController.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644
  1. package com.lemon.lifecenter.controller;
  2. import java.lang.reflect.Field;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import org.json.JSONObject;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.transaction.annotation.Propagation;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import org.springframework.web.bind.annotation.ModelAttribute;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.RequestMethod;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import org.springframework.web.servlet.ModelAndView;
  20. import com.lemon.lifecenter.common.LifeCenterConfigVO;
  21. import com.lemon.lifecenter.common.LifeCenterController;
  22. import com.lemon.lifecenter.common.LifeCenterFunction;
  23. import com.lemon.lifecenter.common.LifeCenterPaging;
  24. import com.lemon.lifecenter.common.LifeCenterSessionController;
  25. import com.lemon.lifecenter.dto.CenterInfoDTO;
  26. import com.lemon.lifecenter.dto.GroupListDTO;
  27. import com.lemon.lifecenter.dto.LoginDTO;
  28. import com.lemon.lifecenter.dto.PrivateLogDTO;
  29. import com.lemon.lifecenter.dto.StaffDTO;
  30. import com.lemon.lifecenter.service.CenterService;
  31. import com.lemon.lifecenter.service.GroupListService;
  32. import com.lemon.lifecenter.service.LoginService;
  33. import com.lemon.lifecenter.service.PrivateLogService;
  34. import com.lemon.lifecenter.service.StaffService;
  35. // 의료진관리 contorller
  36. @Controller
  37. @RequestMapping("/staff")
  38. public class StaffController extends LifeCenterController {
  39. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  40. private LifeCenterPaging paging;
  41. @Autowired
  42. private LoginService loginService;
  43. @Autowired
  44. private StaffService memberService;
  45. @Autowired
  46. private LifeCenterConfigVO config;
  47. @Autowired
  48. private GroupListService groupListService;
  49. @Autowired
  50. private CenterService centerService;
  51. @Autowired
  52. private PrivateLogService privateLogService;
  53. @RequestMapping("/new")
  54. public ModelAndView staffNew( HttpServletRequest request,HttpServletResponse response ) throws Exception {
  55. int sesCenterCode = Integer.valueOf( LifeCenterSessionController.getSession( request, "sesCenterCode" ) ) ;
  56. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  57. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  58. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  59. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  60. String processingContents = "의료진 신규 등록 페이지 접속";
  61. PrivateLogDTO logDTO = new PrivateLogDTO();
  62. logDTO.setId( sesId );
  63. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  64. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  65. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  66. logDTO.setProcessingTarget( "" );
  67. logDTO.setProcessingContents( processingContents );
  68. privateLogService.insertPrivateAccessLog( logDTO );
  69. CenterInfoDTO cDto = new CenterInfoDTO();
  70. cDto.setCenterCode(sesCenterCode);
  71. List<CenterInfoDTO> centerList = memberService.selectCenterList(cDto);
  72. ModelAndView mv = setMV("staff/new");
  73. GroupListDTO dto = new GroupListDTO();
  74. List<GroupListDTO> groupList = groupListService.selectGroupList(dto);
  75. for( GroupListDTO data : groupList ) {
  76. data.setEncryptIdx( LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, String.valueOf( data.getIdx() ) ) );
  77. }
  78. mv.addObject( "centerList", centerList );
  79. mv.addObject( "groupList", groupList );
  80. return mv;
  81. }
  82. @RequestMapping("/new/regist")
  83. public String staffNewRegist(
  84. @ModelAttribute("dto") final StaffDTO dto,
  85. HttpServletRequest request,
  86. @RequestParam(value="encryptIdx", required=true) String encryptIdx,
  87. @RequestParam(value="passwordConfirm", required=true) String passwordConfirm ) throws Exception {
  88. // 의료진 관리 -> 의료진 신규등록 컨트롤러
  89. // 의료진 신규등록시 -> 계정 권한은 일반사용자 권한으로 생성? -> 관리자로도 생성?
  90. // 센터하나당 관리자 권한 계정은 1개임 (시스템관리자가 센터생성할때 관리자 계정 1개 발급)
  91. String decryptIdx = LifeCenterFunction.aesDecrypt( config.aesKey, config.IV, encryptIdx );
  92. // password 일치확인
  93. String password = dto.getPassword();
  94. if( !password.equals( passwordConfirm ) ) {
  95. // redirect page back
  96. }
  97. dto.setGroupIdx( Integer.valueOf( decryptIdx ) );
  98. dto.setPassword( LifeCenterFunction.sha256Encrypt(password) );
  99. memberService.insertStaff( dto );
  100. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  101. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  102. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  103. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  104. String processingContents = "의료진 신규 등록 완료";
  105. PrivateLogDTO logDTO = new PrivateLogDTO();
  106. logDTO.setId( sesId );
  107. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  108. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  109. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  110. logDTO.setProcessingTarget( "(의료진)" + dto.getName() + "["+dto.getId()+"]" );
  111. logDTO.setProcessingContents( processingContents );
  112. privateLogService.insertPrivateAccessLog( logDTO );
  113. return "redirect:../info?staffId=" + dto.getId();
  114. }
  115. @RequestMapping("/info")
  116. public ModelAndView staffInfo(
  117. HttpServletRequest request,HttpServletResponse response,
  118. @RequestParam(value="staffId", required=false, defaultValue="") String staffID) throws Exception {
  119. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  120. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  121. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  122. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  123. StaffDTO dto = new StaffDTO();
  124. dto.setId(staffID);
  125. dto = memberService.selectMemberInfo(dto);
  126. String processingContents = "의료진 정보 상세 페이지 접속";
  127. PrivateLogDTO logDTO = new PrivateLogDTO();
  128. logDTO.setId( sesId );
  129. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  130. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  131. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  132. logDTO.setProcessingTarget( "(의료진)" + dto.getName() + "["+dto.getId()+"]" );
  133. logDTO.setProcessingContents( processingContents );
  134. privateLogService.insertPrivateAccessLog( logDTO );
  135. dto.setPhoneNumber( LifeCenterFunction.phone( dto.getPhoneNumber() ) );
  136. String enMemberId = LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, staffID );
  137. ModelAndView mv = setMV("staff/info");
  138. mv.addObject( "info", dto );
  139. mv.addObject( "sesId", sesId );
  140. mv.addObject( "enMemberId", enMemberId );
  141. mv.addObject( "centerCode", dto.getCenterCode() );
  142. return mv;
  143. }
  144. @RequestMapping("/edit")
  145. public ModelAndView staffEdit(
  146. HttpServletRequest request,HttpServletResponse response,
  147. @RequestParam(value="staffId", required=false, defaultValue="") String staffId) throws Exception {
  148. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  149. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  150. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  151. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  152. // List<CenterInfoDTO> centerList = memberService.selectCenterList();
  153. StaffDTO dto = new StaffDTO();
  154. dto.setId(staffId);
  155. dto = memberService.selectMemberInfo(dto);
  156. String processingContents = "의료진 정보 변경 페이지 접속";
  157. PrivateLogDTO logDTO = new PrivateLogDTO();
  158. logDTO.setId( sesId );
  159. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  160. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  161. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  162. logDTO.setProcessingTarget( "(의료진)" + dto.getName() + "["+dto.getId()+"]" );
  163. logDTO.setProcessingContents( processingContents );
  164. privateLogService.insertPrivateAccessLog( logDTO );
  165. String groupIdx = LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, String.valueOf(dto.getGroupIdx()));
  166. int centerCode = dto.getCenterCode();
  167. GroupListDTO gDto = new GroupListDTO();
  168. List<GroupListDTO> groupList = groupListService.selectGroupList(gDto);
  169. for( GroupListDTO data : groupList ) {
  170. data.setEncryptIdx( LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, String.valueOf( data.getIdx() ) ) );
  171. }
  172. ModelAndView mv = setMV("staff/edit");
  173. mv.addObject("info", dto);
  174. mv.addObject("centerCode", centerCode);
  175. mv.addObject("groupIdx", groupIdx);
  176. // mv.addObject("centerList", centerList);
  177. mv.addObject( "groupList", groupList );
  178. return mv;
  179. }
  180. @RequestMapping( value="edit/update", method=RequestMethod.POST)
  181. public String editUpdate(
  182. HttpServletRequest request,HttpServletResponse response,
  183. @RequestParam(value="encGroupIdx", required=false, defaultValue = "") String encGroupIdx,
  184. @ModelAttribute("dto") StaffDTO dto ) throws Exception {
  185. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  186. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  187. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  188. String memberId = dto.getId();
  189. StaffDTO originMemberData = new StaffDTO();
  190. StaffDTO newMemberData = new StaffDTO();
  191. originMemberData.setId( memberId );
  192. originMemberData = memberService.selectMemberInfo(originMemberData);
  193. String decryptIdx = "";
  194. if( !encGroupIdx.equals("") ) {
  195. decryptIdx = LifeCenterFunction.aesDecrypt( config.aesKey, config.IV, encGroupIdx );
  196. dto.setGroupIdx( Integer.valueOf( decryptIdx ) );
  197. }
  198. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  199. dto.setUpdateById(sesId);
  200. int rts = memberService.updateEditMember(dto);
  201. newMemberData = new StaffDTO();
  202. newMemberData.setId( memberId );
  203. newMemberData = memberService.selectMemberInfo(newMemberData);
  204. String processingDetail = "[수정내역 :";
  205. PrivateLogDTO logDTO = new PrivateLogDTO();
  206. int cnt = 0;
  207. try{
  208. Object objNew=newMemberData;
  209. for (Field field : objNew.getClass().getDeclaredFields()){
  210. Object objOrigin=originMemberData;
  211. for (Field field1 : objOrigin.getClass().getDeclaredFields()){
  212. if( field1.getName().equals( field.getName() ) ) {
  213. field1.setAccessible(true);
  214. Object valueOrigin = field1.get(objOrigin);
  215. String originVal = valueOrigin == null ? "": valueOrigin.toString();
  216. field.setAccessible(true);
  217. Object valueNew=field.get(objNew);
  218. String newVal = valueNew == null ? "": valueNew.toString();
  219. // System.err.println(field.getName()+","+originVal + " -> " + newVal);
  220. if( !originVal.equals( newVal ) ) {
  221. // System.out.println(field.getName()+","+originVal + " -> " + newVal);
  222. String nv = cnt >= 1 ? ", " : " ";
  223. processingDetail += nv + field.getName()+"컬럼 값 변경 ("+originVal + " -> " + newVal +")";
  224. cnt ++;
  225. }
  226. }
  227. }
  228. }
  229. processingDetail +="]";
  230. }catch (Exception e){
  231. e.printStackTrace();
  232. }
  233. String processingContents = "의료진 정보 수정 [총 " + cnt + "건 항목] " + processingDetail;
  234. System.err.println( "processingContents : " + processingContents );
  235. logDTO.setId( sesId );
  236. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  237. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  238. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  239. logDTO.setProcessingTarget( "(의료진)" + originMemberData.getName() + "["+originMemberData.getId()+"]" );
  240. logDTO.setProcessingContents( processingContents );
  241. privateLogService.insertPrivateAccessLog( logDTO );
  242. return "redirect:/staff/info?staffId=" + dto.getId();
  243. }
  244. @RequestMapping("/myinfo")
  245. public ModelAndView staffMyinfo(HttpServletRequest request,HttpServletResponse response) {
  246. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  247. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  248. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  249. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  250. StaffDTO dto = new StaffDTO();
  251. dto.setId(sesId);
  252. dto = memberService.selectMemberInfo(dto);
  253. String processingContents = "내정보 변경 페이지 접속";
  254. PrivateLogDTO logDTO = new PrivateLogDTO();
  255. logDTO.setId( sesId );
  256. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  257. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  258. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  259. logDTO.setProcessingTarget( "(의료진)" + dto.getName() + "["+dto.getId()+"]" );
  260. logDTO.setProcessingContents( processingContents );
  261. privateLogService.insertPrivateAccessLog( logDTO );
  262. String referer = request.getHeader( "Referer" );
  263. ModelAndView mv = setMV("staff/myinfo");
  264. mv.addObject("info", dto);
  265. mv.addObject("returnUrl", referer);
  266. return mv;
  267. }
  268. @RequestMapping( value="myinfo/update", method=RequestMethod.POST)
  269. public String myInfoUpdate(
  270. HttpServletRequest request, HttpServletResponse response,
  271. @ModelAttribute("dto") final StaffDTO dto,
  272. @RequestParam(value="passwordNew", required=false, defaultValue="") String passwordNew,
  273. @RequestParam(value="passwordConfirm", required=false, defaultValue="") String passwordConfirm,
  274. @RequestParam(value="returnUrl", required=false, defaultValue="") String returnUrl) throws Exception {
  275. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  276. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  277. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  278. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  279. String memberId = dto.getId();
  280. StaffDTO originMemberData = new StaffDTO();
  281. StaffDTO newMemberData = new StaffDTO();
  282. originMemberData.setId( memberId );
  283. originMemberData = memberService.selectMemberInfo(originMemberData);
  284. Object sesPasswordChange = request.getSession().getAttribute( "sesPasswordChange" );
  285. String encryptPw = LifeCenterFunction.sha256Encrypt(dto.getPassword());
  286. dto.setPassword(encryptPw);
  287. int mCnt = memberService.selectMemberCount(dto);
  288. if (mCnt == 1) {
  289. if (!passwordNew.equals("")) {
  290. if (passwordNew.equals(passwordConfirm)) {
  291. dto.setPassword(LifeCenterFunction.sha256Encrypt(passwordNew));
  292. if( sesPasswordChange != null && ( sesPasswordChange.equals( "REQUIRED" ) || sesPasswordChange.equals( "RESET" ) ) ) {
  293. LifeCenterSessionController.setSession( request, "sesPasswordChange", "" );
  294. }
  295. }
  296. }
  297. memberService.updateMember(dto);
  298. LifeCenterSessionController.setSession( request, "sesName", dto.getName() );
  299. newMemberData = new StaffDTO();
  300. newMemberData.setId( memberId );
  301. newMemberData = memberService.selectMemberInfo(newMemberData);
  302. String processingDetail = "[수정내역 :";
  303. PrivateLogDTO logDTO = new PrivateLogDTO();
  304. int cnt = 0;
  305. try{
  306. Object objNew=newMemberData;
  307. for (Field field : objNew.getClass().getDeclaredFields()){
  308. Object objOrigin=originMemberData;
  309. for (Field field1 : objOrigin.getClass().getDeclaredFields()){
  310. if( field1.getName().equals( field.getName() ) ) {
  311. field1.setAccessible(true);
  312. Object valueOrigin = field1.get(objOrigin);
  313. String originVal = valueOrigin == null ? "": valueOrigin.toString();
  314. field.setAccessible(true);
  315. Object valueNew=field.get(objNew);
  316. String newVal = valueNew == null ? "": valueNew.toString();
  317. // System.err.println(field.getName()+","+originVal + " -> " + newVal);
  318. if( !originVal.equals( newVal ) ) {
  319. // System.out.println(field.getName()+","+originVal + " -> " + newVal);
  320. String nv = cnt >= 1 ? ", " : " ";
  321. processingDetail += nv + field.getName()+"컬럼 값 변경 ("+originVal + " -> " + newVal +")";
  322. cnt ++;
  323. }
  324. }
  325. }
  326. }
  327. processingDetail +="]";
  328. }catch (Exception e){
  329. e.printStackTrace();
  330. }
  331. String processingContents = "내정보 수정 [총 " + cnt + "건 항목] " + processingDetail;
  332. System.err.println( "processingContents : " + processingContents );
  333. logDTO.setId( sesId );
  334. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  335. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  336. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  337. logDTO.setProcessingTarget( "(의료진)" + originMemberData.getName() + "["+originMemberData.getId()+"]" );
  338. logDTO.setProcessingContents( processingContents );
  339. privateLogService.insertPrivateAccessLog( logDTO );
  340. LifeCenterFunction.scriptMessage( response, "alertBox({ txt : '변경되었습니다', callBack : function(){ location.href='/staff/myinfo'; } });" );
  341. return "/common/blank";
  342. } else {
  343. LifeCenterFunction.scriptMessage( response, "alertBox({ txt : '비밀번호가 일치하지않습니다.', callBack : function(){ history.back(); } });" );
  344. return "/common/blank";
  345. }
  346. // return "redirect:/";
  347. // return "redi"returnUrl;
  348. }
  349. @RequestMapping("/list")
  350. public ModelAndView staffList(
  351. @ModelAttribute("dto") final StaffDTO dto,
  352. @RequestParam(value="selectState", required=false, defaultValue="") String selectState,
  353. @RequestParam(value="sData", required=false, defaultValue="") String sData,
  354. @RequestParam(value="useYn", required=false, defaultValue="") String useYn,
  355. @RequestParam(value="page", required=false, defaultValue="1") int page,
  356. HttpServletRequest request, HttpServletResponse response) {
  357. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  358. String sesGroupIdx = LifeCenterSessionController.getSession( request, "sesGroupIdx" );
  359. String sesCenterCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
  360. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  361. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  362. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  363. String processingContents = "의료진 리스트 조회";
  364. PrivateLogDTO logDTO = new PrivateLogDTO();
  365. logDTO.setId( sesId );
  366. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  367. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  368. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  369. logDTO.setProcessingTarget( "" );
  370. logDTO.setProcessingContents( processingContents );
  371. privateLogService.insertPrivateAccessLog( logDTO );
  372. if (selectState.equals("sId")) {
  373. dto.setId(sData);
  374. } else if (selectState.equals("sName")) {
  375. dto.setName(sData);
  376. } else {
  377. dto.setCenterName(sData);
  378. }
  379. dto.setGroupIdx(Integer.parseInt( sesGroupIdx ));
  380. dto.setSesId(sesId);
  381. dto.setCenterCode(Integer.parseInt(sesCenterCode));
  382. dto.setLimit( ( Integer.valueOf( page ) - 1 ) * config.pageDataSize );
  383. dto.setLimitMax( config.pageDataSize );
  384. int total = memberService.selectMemberListCount(dto);
  385. List<StaffDTO> list = new ArrayList<StaffDTO>();
  386. if (total > 0) {
  387. list = memberService.selectMemberList(dto);
  388. }
  389. String param = "selectState=" + selectState + "&sData=" + sData + "&useYn=" + useYn;
  390. paging = LifeCenterPaging.getInstance();
  391. paging.paging(config, total, page, param);
  392. ModelAndView mv = setMV("staff/list");
  393. mv.addObject("total", total);
  394. mv.addObject("selectState", selectState);
  395. mv.addObject("sData", sData);
  396. mv.addObject("useYn", useYn);
  397. mv.addObject("item", list);
  398. mv.addObject("paging", paging);
  399. mv.addObject( "sesId", sesId );
  400. mv.addObject("sesGroupIdx", sesGroupIdx );
  401. return mv;
  402. }
  403. @RequestMapping( value="/duplicateIdCheck", method = RequestMethod.POST )
  404. @ResponseBody
  405. public boolean duplicateIdCheck( @RequestParam( value="staffId", required = false, defaultValue = "" ) String id ) {
  406. boolean result = false; // false : 중복 , true : 중복아님
  407. JSONObject obj = new JSONObject();
  408. LoginDTO dto = new LoginDTO();
  409. if( id.trim().equals( "" ) ) {
  410. result = false;
  411. } else {
  412. dto.setId( id.trim() );
  413. int count = loginService.selectMemberIdCount( dto );
  414. if( count == 0 ) {
  415. result = true;
  416. }
  417. }
  418. // obj.put( "result" , result );
  419. return result;
  420. }
  421. @RequestMapping( value="/passwordReset", method = RequestMethod.POST )
  422. @ResponseBody
  423. public boolean passwordReset(
  424. HttpServletRequest request,
  425. @RequestParam( value="staffId", required = true ) String id,
  426. @RequestParam( value="type", required = true ) String type) throws Exception {
  427. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  428. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  429. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  430. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  431. StaffDTO info = new StaffDTO();
  432. info.setId(id);
  433. info = memberService.selectMemberInfo(info);
  434. String processingContents = "의료진 비밀번호 초기화 처리";
  435. PrivateLogDTO logDTO = new PrivateLogDTO();
  436. logDTO.setId( sesId );
  437. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  438. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  439. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  440. logDTO.setProcessingTarget( "(의료진)" + info.getName() + "["+info.getId()+"]" );
  441. logDTO.setProcessingContents( processingContents );
  442. privateLogService.insertPrivateAccessLog( logDTO );
  443. boolean result = false;
  444. String pw = "";
  445. StaffDTO dto = new StaffDTO();
  446. dto.setId(id);
  447. if (type.equals("staff")) {
  448. pw = LifeCenterFunction.sha256Encrypt(config.staffResetPw);
  449. } else {
  450. pw = LifeCenterFunction.sha256Encrypt(config.centerResetPw);
  451. }
  452. dto.setPassword(pw);
  453. int rts = memberService.updateMemberPwReset(dto);
  454. if (rts == 1) {
  455. result = true;
  456. }
  457. return result;
  458. }
  459. @RequestMapping("/delete")
  460. @Transactional(propagation=Propagation.REQUIRED)
  461. public String memberDelete( @RequestParam( value="enMemberId", required = true ) String enMemberId,
  462. HttpServletRequest request,HttpServletResponse response ) throws Exception {
  463. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  464. String sesName = LifeCenterSessionController.getSession( request, "sesName" );
  465. String sesCenterName = LifeCenterSessionController.getSession( request, "sesCenterName" );
  466. String logCenterName = !sesCenterName.equals( "" )? "["+sesCenterName+"] " : "";
  467. String memberId = LifeCenterFunction.aesDecrypt( config.aesKey, config.IV, enMemberId );
  468. StaffDTO info = new StaffDTO();
  469. info.setId(memberId);
  470. info = memberService.selectMemberInfo(info);
  471. StaffDTO dto = new StaffDTO();
  472. dto.setId( memberId );
  473. LoginDTO loginDTO = new LoginDTO();
  474. loginDTO.setId( memberId );
  475. int total = loginService.selectMemberIdCount( loginDTO );
  476. if( total == 0 ) {
  477. LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '이미 삭제되었거나 존재하지않는 사용자입니다.', callBack : function(){ history.back(); } });" );
  478. return "/common/blank";
  479. } else {
  480. memberService.deleteMember(dto);
  481. String processingContents = "의료진 삭제 처리";
  482. PrivateLogDTO logDTO = new PrivateLogDTO();
  483. logDTO.setId( sesId );
  484. logDTO.setAccessorDetail( logCenterName + sesName + " (" + sesId + ")" );
  485. logDTO.setIp( LifeCenterFunction.getRemoteAddr( request ) );
  486. logDTO.setFullUrl( LifeCenterFunction.getFullURL( request ) );
  487. logDTO.setProcessingTarget( "(의료진)" + info.getName() + "["+info.getId()+"]" );
  488. logDTO.setProcessingContents( processingContents );
  489. privateLogService.insertPrivateAccessLog( logDTO );
  490. }
  491. LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '사용자가 삭제되었습니다. ', callBack : function(){ location.href='./list'; } });" );
  492. return "/common/blank";
  493. }
  494. }