| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996 |
- package platform.modules.home.web;
- import com.alibaba.fastjson.JSONObject;
- import com.aliyuncs.exceptions.ClientException;
- import com.github.pagehelper.PageInfo;
- import com.google.common.base.Preconditions;
- import com.xiaoleilu.hutool.crypto.SecureUtil;
- import com.xiaoleilu.hutool.util.StrUtil;
- import io.jsonwebtoken.Claims;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.shiro.authc.*;
- import org.apache.shiro.authc.pam.UnsupportedTokenException;
- import org.apache.shiro.subject.Subject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.data.redis.core.HashOperations;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.ui.ModelMap;
- import org.springframework.web.bind.annotation.*;
- import platform.common.Constant;
- import platform.common.annotation.OperationLog;
- import platform.common.base.controller.BaseController;
- import platform.common.base.model.CheckResult;
- import platform.common.base.model.DictionaryItem;
- import platform.common.base.service.DictionaryItemService;
- import platform.common.util.*;
- import platform.config.access.limit.AccessLimit;
- import platform.config.redis.RedisService;
- import platform.modules.api.dto.SyncUserDto;
- import platform.modules.api.response.epoint.EpointTokenDto;
- import platform.modules.api.service.SkyImageApiService;
- import platform.modules.api.service.SyncThridFacade;
- import platform.modules.build.entity.Company;
- import platform.modules.build.entity.CompanyContact;
- import platform.modules.build.entity.CompanyMaterial;
- import platform.modules.build.service.BuildInfoService;
- import platform.modules.build.service.CompanyContactService;
- import platform.modules.build.service.CompanyMaterialService;
- import platform.modules.build.service.CompanyService;
- import platform.modules.company.service.CompanyInfoManageService;
- import platform.modules.company.service.StockLandService;
- import platform.modules.government.dto.ActivitySearchCondition;
- import platform.modules.government.dto.FeedbackQuery;
- import platform.modules.government.dto.QueryCondition;
- import platform.modules.government.entity.*;
- import platform.modules.government.service.*;
- import platform.modules.home.dto.HomeRefactorDto;
- import platform.modules.home.dto.LoginDto;
- import platform.modules.home.dto.ThirdLoginDto;
- import platform.modules.home.request.FindRequest;
- import platform.modules.home.request.GlobalSearchBean;
- import platform.modules.home.response.FindResponseProject;
- import platform.modules.home.service.HomeRefactorService;
- import platform.modules.sys.entity.*;
- import platform.modules.sys.service.*;
- import platform.modules.sys.shiro.UsernamePasswordToken;
- import platform.modules.sys.web.ResponseMessage;
- import java.util.Base64;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.*;
- import java.util.concurrent.CompletableFuture;
- import static platform.common.Constant.HEAD_SESSION_STATUS_KEY;
- import static platform.common.Constant.HEAD_SESSION_STATUS_VALUE;
- /**
- * @author kevin
- * @since 2019/5/21 3:39 PM
- */
- @RestController
- @RequestMapping("refactor/home")
- public class HomeRefactorController extends BaseController {
- @Autowired
- private HomeRefactorService homeRefactorService;
- @Autowired
- private ActivityService activityService;
- @Autowired
- private ProjectDeclarationService projectDeclarationService;
- @Autowired
- private ActivityFeedbackService activityFeedbackService;
- @Autowired
- private ActivityReviewService activityReviewService;
- @Autowired
- private StreetService streetService;
- @Autowired
- private DictionaryItemService dictionaryItemService;
- private static String profiles;
- @Value("${spring.profiles}")
- public void setProfiles(String param) {
- this.profiles = param;
- }
- @Autowired
- private VerificationCodeUtil verificationCodeUtil;
- @Autowired
- UserService userService;
- @Autowired
- private WaitToDoService waitToDoService;
- @Autowired
- private CompanyService companyService;
- @Autowired
- private AttachmentService attachmentService;
- @Autowired
- private SkyImageApiService skyImageApiService;
- @Autowired
- private SyncThridFacade syncThridFacade;
- @Autowired
- CompanyInfoManageService companyInfoManageService;
- @Autowired
- CompanyContactService companyContactService;
- @Autowired
- StockLandService stockLandService;
- @Autowired
- ApprovalService approvalService;
- @Autowired
- private CompanyMaterialService companyMaterialService;
- @Autowired
- private NavigationService navigationService;
- @Autowired
- private FriendLinkService friendLinkService;
- @Autowired
- private LogoService logoService;
- @Autowired
- private ContentService contentService;
- @Autowired
- private RedisTemplate redisTemplate;
- @Autowired
- private RedisService redisService;
- @Autowired
- private RedisUtil redisUtil;
- @Autowired
- private MenuService menuService;
- @Value("${carrier_hash_key}")
- private String carrier_hash_key;
- /**
- * 门户首页
- *
- * @return
- */
- @GetMapping("")
- public Object index() {
- HomeRefactorDto refactor = homeRefactorService.findHomeIndex();
- refactor.setFile_url(setFileUrl());
- return ResponseMessage.success("success", refactor);
- }
- /**
- * content列表
- *
- * @param request
- * @return
- */
- @PostMapping("/contentList")
- @AccessLimit
- public Object contentList(@RequestBody FindRequest request) {
- PageInfo<Content> info = homeRefactorService.findContentList(request);
- return ResponseMessage.success("success", info);
- }
- /**
- * content详情
- *
- * @param id
- * @return
- */
- @GetMapping("/contentDetail/{id}")
- public Object contentDetail(@PathVariable Integer id) {
- Content content = homeRefactorService.contentDeatil(id);
- content.getFileDown().setDownload_uri(setFileUrl());
- return ResponseMessage.success("success", content);
- }
- /**
- * 专题活动列表
- *
- * @param request
- * @return
- */
- @PostMapping(value = "/activityList")
- public ResponseMessage findActivity(@RequestBody FindRequest request) {
- request.setFile_url(setFileUrl());
- PageInfo<ActivityDetail> pageInfo = activityService.findContentList(request);
- return ResponseMessage.success("查询成功", pageInfo);
- }
- /**
- * 活动回顾列表
- *
- * @param request
- * @return
- */
- @PostMapping(value = "/reviewList")
- public ResponseMessage findReviewList(@RequestBody QueryCondition request) {
- request.setFile_url(setFileUrl());
- PageInfo<ActivityReview> pageInfo = activityReviewService.findActivityReviewList(request);
- return ResponseMessage.success("查询成功", pageInfo);
- }
- /**
- * 专题活动详情
- *
- * @param id
- * @return
- */
- @GetMapping("/activityDetail/{id}")
- public Object activityDetail(@PathVariable("id") Integer id, Integer user_id) {
- if (user_id == null) {
- User user = ShiroUtils.getUserEntity();
- user_id = user.getId();
- }
- ActivityDetail activityDetail = homeRefactorService.findByActivityId(id, user_id);
- activityDetail.setFile_url(setFileUrl());
- return ResponseMessage.success("查询成功", activityDetail);
- }
- /**
- * 门户评论列表
- *
- * @param id
- * @return
- */
- @GetMapping("/feedbacks/{id}")
- public Object frontFeedbackList(@PathVariable Integer id, FeedbackQuery query) {
- //活动反馈与评论
- query.setActivity_id(id);
- PageInfo<ActivityFeedback> pageInfo = activityFeedbackService.findFeedbackList(query);
- return ResponseMessage.success("success", pageInfo);
- }
- /**
- * 项目申报列表
- *
- * @param request
- * @return
- */
- @PostMapping(value = "/projectList")
- public ResponseMessage findProject(@RequestBody FindRequest request) {
- PageInfo<ProjectDeclaration> pageInfo = projectDeclarationService.findProjectList(request);
- return ResponseMessage.success("查询成功", pageInfo);
- }
- /**
- * 项目申报详情
- *
- * @param id
- * @return
- */
- @GetMapping("/projectDetail/{id}/{isFilling}")
- public Object projectDetail(@PathVariable Integer id, @PathVariable Integer isFilling) {
- return ResponseMessage.success("查询成功", homeRefactorService.findProjectDetail(id, isFilling));
- }
- @PostMapping(value = "/getDayEventList")
- public Object getDayEventList(@RequestBody ActivityDetail activityDetail) {
- log.info("获取一天内的所有活动");
- String startTime = activityDetail.getActivity_starttime();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- try {
- Date parse = sdf.parse(startTime);
- startTime = sdf.format(parse);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- List<ActivityDetail> dates = activityService.getEventList(startTime);
- return ResponseMessage.success("success", dates);
- }
- @GetMapping(value = "/activityList/time")
- @ResponseBody
- public ResponseMessage list(String startTime, String endTime) {
- ActivitySearchCondition param = new ActivitySearchCondition();
- param.setStartTime(startTime);
- param.setEndTime(endTime);
- List<ActivityDetail> list = activityService.findAvtivityListByTime(param);
- return ResponseMessage.success("success", list);
- }
- /**
- * 新首页查询 通知公告(其实是content内容管理) 和 活动
- */
- @PostMapping("/search/global")
- public Object searchGlobal(
- @RequestBody GlobalSearchBean globalSearchBean
- ) {
- return ResponseMessage.success("success", homeRefactorService.searchGlobal(globalSearchBean.getPageNum(), globalSearchBean.getPageSize(), globalSearchBean.getKeyword()));
- }
- @GetMapping("/search/latest")
- public Object searchLatest(@RequestParam(value = "size", defaultValue = "10", required = false) Integer size) {
- return ResponseMessage.success("success", homeRefactorService.searchLatest(size));
- }
- @GetMapping(value = "/param/register")
- @ResponseBody
- public ResponseMessage registerParam(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) {
- log.info("注册页面参数!");
- //Ajax登录超时校验,如果超时,进行前台响应提示
- if (WebUtil.isAjaxRequest(request)) {
- response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
- response.setHeader(HEAD_SESSION_STATUS_KEY, HEAD_SESSION_STATUS_VALUE);
- response.setContentType("text/html;charset=utf-8");
- }
- List<Street> streetList = streetService.findList();
- Iterator<Street> it = streetList.iterator();
- while (it.hasNext()) {
- Street street = it.next();
- if (!street.getIs_start()) {
- it.remove();
- }
- }
- modelMap.addAttribute("streetList", streetList);
- //查询企业性质
- List<DictionaryItem> companyTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.COMPANY_TYPE);
- modelMap.put("companyTypeList", companyTypeList);
- //modelMap.put("companyTypeList", buildTypeService.findList(Constant.DictType.COMPANY));
- //查询币种单位数据
- List<DictionaryItem> itemList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.CURRENCY_UNIT);
- modelMap.put("itemList", itemList);
- //查询行业类型
- List<DictionaryItem> industryTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.INDUSTRY_TYPE);
- modelMap.put("industryTypeList", industryTypeList);
- return ResponseMessage.success("success", modelMap);
- }
- /**
- * 个人注册
- * 20200514 新门户使用
- *
- * 这里密码需要格式更多一些
- *
- * @param userInfo
- * @return
- */
- @PostMapping("/personalRegister")
- @ResponseBody
- public ResponseMessage personalRegister(@RequestBody User userInfo) {
- if (IsTooFrequently()) {
- ResponseMessage.error("操作过于频繁,请稍后再试!");
- }
- try {
- // if (!Constant.Environment.PROD_TEST.equals(profiles) && !Constant.Environment.TEST.equals(profiles)) {
- if (!verificationCodeUtil.validateVerificationCode(userInfo.getPhone(), userInfo.getValidateNum())) {
- return ResponseMessage.error("验证码错误!");
- }
- // }
- String pwd = userInfo.getPassword().trim();
- Preconditions.checkNotNull(pwd);
- if (!PwdCheckUtil.checkPasswordLength(pwd, "8", null)
- || !PwdCheckUtil.checkContainCase(pwd)
- || !PwdCheckUtil.checkContainDigit(pwd)
- || !PwdCheckUtil.checkContainSpecialChar(pwd)
- ) {
- return ResponseMessage.error("密码必须包含数字、字母、特殊符号且大于8位");
- }
- User user = new User();
- user.setUser_name(userInfo.getUser_name());
- user.setNick_name(userInfo.getNick_name().trim());
- user.setPassword(SecureUtil.md5().digestHex(userInfo.getPassword().trim()));
- user.setPhone(userInfo.getPhone());
- user.setUser_type(Constant.UserType.PERSONAL);
- user.setIs_register(1);
- user.setFist_login(1);
- user.setIs_start(true);
- user.setIs_admin(false);
- user.setCreate_name(userInfo.getUser_name());
- user.setCreate_time(DateUtil.getTimeString(new Date()));
- userService.insertAndGetId(user);
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseMessage.error("注册失败" + e.getMessage());
- }
- return ResponseMessage.success("注册成功");
- }
- /**
- * 企业注册
- * 20200514 新门户使用
- *
- * @param information
- * @return
- * @throws Exception
- */
- @PostMapping("/register")
- @ResponseBody
- public ResponseMessage register(@RequestBody Company information) {
- if (IsTooFrequently()) {
- ResponseMessage.error("操作过于频繁,请稍后再试!");
- }
- try {
- Approval approval = new Approval();
- // if (!Constant.Environment.PROD_TEST.equals(profiles) && !Constant.Environment.TEST.equals(profiles)) {
- if (!verificationCodeUtil.validateVerificationCode(information.getPhone(), information.getValidateNum())) {
- return ResponseMessage.error("验证码错误!");
- }
- // }
- information.setConfirm_password(null);
- Street street = new Street();
- if (null != information.getStreet_id()) {
- street = streetService.findById(information.getStreet_id());
- }
- /*
- if (StringUtils.isNotBlank(stockLandService.getCompanyRegister(information.getStreet_id()))) {
- approval.setNextchecker(stockLandService.getCompanyRegister(information.getStreet_id()));
- }
- //20180418-yl- 街道没有审批人也可以注册,分菜单给某角色,某个角色的人就可以审批
- else {
- return ResponseMessage.error("注册失败,本公司所属街道企业注册审核组没有配置人员,请联系街道管理员配置!");
- }*/
- approval.setOper_type(Constant.OperType.SUBMIT);
- approval.setType(Constant.DictionaryType.COMPANY_REGISTER);
- information.setIs_start(false);
- information.setIs_register(0);
- //查看是否已经存在企业
- // Company company = companyService.findByParkIdAndCompanyName(information.getCompany_name(), information.getBuild_id());
- Company company = companyService.findByCompanyName(information.getCompany_name());
- if (company != null) {
- information.setId(company.getId());
- information.setIs_register(0);
- companyService.updateSelective(information);
- } else {
- information.setStreet_name(street.getName());
- companyService.insertAndGetId(information);
- }
- approval.setApply_id(information.getId());
- approval.setDeal_time(DateUtil.getTimeString(new Date()));
- approval.setDel_flag(false);
- approval.setBefore_approvalstatus("0");
- approval.setCreate_name(information.getUser_name());
- //approvalService.insertAndGetId(approval);
- /*List<CompanyContact> companyContactList = information.getCompanyContacts();
- if (companyContactList != null && companyContactList.size() > 0) {
- for (CompanyContact companyContacts : companyContactList) {
- companyContacts.setCompany_id(information.getId());
- companyContactService.saveSelective(companyContacts);
- }
- }*/
- CompanyContact contact = new CompanyContact();
- contact.setCompany_id(information.getId());
- contact.setContact(information.getUser_name());
- contact.setPhone(information.getPhone());
- contact.setDel_flag(false);
- companyContactService.saveSelective(contact);
- List<CompanyContact> companyContactList = information.getContactList();
- if (companyContactList != null && companyContactList.size() > 0) {
- for (CompanyContact companyContacts : companyContactList) {
- if (companyContacts != null) {
- companyContacts.setCompany_id(information.getId());
- companyContactService.saveSelective(companyContacts);
- }
- }
- }
- List<FileDown> files = information.getFileDownList();
- if (files != null && files.size() > 0) {
- for (FileDown file : files) {
- if (file != null) {
- //attachmentDao.deleteByBusiness(Constant.Attachment.COMPANY_MATERIAL, information.getId());
- attachmentService.updateAttachment(Constant.Attachment.COMPANY_MATERIAL, information.getId(), file.getFile_id());
- CompanyMaterial companyMaterial = new CompanyMaterial();
- companyMaterial.setAttachment_id(file.getFile_id());
- companyMaterial.setCompany_id(information.getId());
- companyMaterial.setFile_name(file.getFile_name());
- companyMaterialService.insertAndGetId(companyMaterial);
- }
- }
- }
- User user = new User();
- user.setUser_name(information.getUser_name());
- user.setNick_name(information.getNick_name().trim());
- user.setPassword(SecureUtil.md5().digestHex(information.getPassword().trim()));
- user.setPhone(information.getPhone());
- user.setUser_type(Constant.UserType.COMPANY);
- user.setIs_register(0);
- user.setFist_login(1);
- user.setIs_start(false);
- user.setIs_admin(true);
- user.setCompany_id(information.getId());
- user.setCompany_name(information.getCompany_name());
- if (null != information.getBuild_id()) {
- user.setBuild_id(information.getBuild_id());
- user.setBuild_name(information.getBuild_name());
- }
- user.setStreet_id(information.getStreet_id());
- user.setStreet_name(information.getStreet_name());
- user.setCreate_name(information.getUser_name());
- userService.insertAndGetId(user);
- approval.setCreate_by(user.getId());
- approvalService.insertAndGetId(approval);
- information.setCreate_by(user.getId());
- information.setCreate_name(user.getUser_name());
- companyService.updateSelective(information);
- Street finalStreet = street;
- CompletableFuture.runAsync(() -> {
- SyncUserDto dto = new SyncUserDto();
- dto.setAction(Constant.METHOD_STATUS.INSERT);
- dto.setOldUserName("");
- dto.setUserName(user.getUser_name());
- dto.setUserLoginName(user.getNick_name());
- dto.setPassword(information.getPassword().trim());
- dto.setCompanyName(information.getCompany_name());
- if (null != information.getStreet_id()) {
- dto.setStreetName(finalStreet.getName());
- }
- dto.setToken(skyImageApiService.accessToken());
- syncThridFacade.syncUser(dto, null);
- }, ThreadPoolUtil.getInstance());
- //发送短信
- Map<String, String> params = new HashMap<>();
- params.put("user", user.getNick_name());
- params.put("street", information.getStreet_name());
- String templatCode = Constant.SMS_TemplateCode.REGISTER_REMIND;
- String templateParam = JSONObject.toJSONString(params);
- AlibabaSMSUtil.sendSMS(information.getPhone(), templatCode, Constant.SINGNAMW, templateParam);
- //新增街道待办
- addWaitToDo(information);
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseMessage.error("注册失败" + e.getMessage());
- }
- return ResponseMessage.success("您的申请正在属地审核中,审核通过后,您将收到消息提醒。");
- }
- /**
- * 企业重置密码
- *
- * @param information
- * @return
- * @throws Exception
- */
- @PutMapping("/reset")
- @ResponseBody
- public ResponseMessage reset(@RequestBody Company information) {
- try {
- if (!verificationCodeUtil.validateVerificationCode(information.getPhone(), information.getValidateNum())) {
- return ResponseMessage.error("验证码错误!");
- }
- User user = userService.getUserByNickname(information.getNick_name());
- user.setPassword(SecureUtil.md5().digestHex(information.getPassword()));
- userService.updateSelective(user);
- CompletableFuture.runAsync(() -> {
- // 同步密码到天启
- SyncUserDto dto = new SyncUserDto();
- dto.setAction(Constant.METHOD_STATUS.UPDATE);
- dto.setOldUserName(user.getNick_name());
- dto.setUserName(user.getUser_name());
- dto.setUserLoginName(user.getNick_name());
- dto.setPassword(information.getPassword());
- dto.setToken(skyImageApiService.accessToken());
- skyImageApiService.syncUserInfo(dto);
- }, ThreadPoolUtil.getInstance());
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseMessage.error("修改失败" + e.getMessage());
- }
- return ResponseMessage.success("密码修改成功!系统将跳转到登陆页进行登录");
- }
- @Value("${jszypt.url.login}")
- private String JszyptLoginUrl;
- @OperationLog(value = "获取积分平台登录信息")
- @GetMapping(value = "/jszyptLoginInfo")
- @ResponseBody
- public ResponseMessage getJszyptLoginInfo() {
- User user = ShiroUtils.getUserEntity();
- Map map = new HashMap();
- //地址
- map.put("url", JszyptLoginUrl);
- //账号
- map.put("userName ", user.getNick_name());
- //联系电话
- map.put("phone", user.getPhone());
- //用户类型(1代表个人用户,2代表企业用户,3代表政府用户)
- Integer userType = user.getUser_type();
- if(Objects.equals(Constant.UserType.PERSONAL,userType)){
- map.put("userType", 1);
- }else if(Objects.equals(Constant.UserType.COMPANY,userType)){
- map.put("userType", 2);
- }else if(Objects.equals(Constant.UserType.GOVERNMENT,userType)){
- map.put("userType", 3);
- }
- if(Objects.equals(Constant.UserType.COMPANY,userType)){
- Company company = companyService.findById(user.getCompany_id());
- if(company!=null){
- //统一社会信用代码
- map.put("paperNo", company.getUscc());
- //公司名称
- map.put("companyName", company.getCompany_name());
- }
- }
- return ResponseMessage.success("获取积分平台登录信息", map);
- }
- /**
- * 用户登陆
- * 先根据用户名查询出一条用户记录再对比密码是否正确可以防止sql注入
- * 20200514 新门户使用
- *
- * @param login
- * @return
- */
- @OperationLog(value = "用户登录")
- @PostMapping(value = "/login")
- @ResponseBody
- public ResponseMessage login(@RequestBody LoginDto login) {
- String username = login.getUsername();
- String password = login.getPassword();
- Boolean isMobile = login.getIsMobile();
- try {
- //changeNewSession(request);
- Base64.Decoder decoder = Base64.getDecoder();
- username = new String(decoder.decode(username), "UTF-8");
- password = new String(decoder.decode(password), "UTF-8");
- //获取当前的Subject
- Subject currentUser = ShiroUtils.getSubject();
- UsernamePasswordToken token = new UsernamePasswordToken(username, password, isMobile, false);
- //在调用了login方法后,SecurityManager会收到AuthenticationToken,并将其发送给已配置的Realm执行必须的认证检查
- //每个Realm都能在必要时对提交的AuthenticationTokens作出反应
- //所以这一步在调用login(token)方法时,它会走到MyRealm.doGetAuthenticationInfo()方法中,具体验证方式详见此方法
- log.info("对用户进行登录验证..验证开始! username = {}", username);
- // if (checkUserLock(username)) {
- // return ResponseMessage.error(Constant.USER_HAS_LOCK);
- // }
- currentUser.login(token);
- //验证是否登录成功
- if (currentUser.isAuthenticated()) {
- log.info("对用户进行登录验证..验证通过! username = {}", username);
- ModelMap modelMap = new ModelMap();
- this.commonObject(modelMap, false);
- User user = userService.getUser(ShiroUtils.getUserId());
- if ((user.getPhone() == null || "".equals(user.getPhone()))) {
- return ResponseMessage.success(Constant.USER_PHONE_EMPTY, user);
- }
- //获取token
- modelMap.put("token", userService.createToken());
- return ResponseMessage.success(Constant.USER_LOGIN_IN, modelMap);
- }
- } catch (UnknownAccountException e) { //账号不存在
- log.info("! username = {}", username);
- // recordLoginFail(username);
- return ResponseMessage.error(Constant.USER_NOT_FIND);
- } catch (IncorrectCredentialsException e) {
- log.info("对用户进行登录验证..验证未通过,错误的凭证! username = {}", username);
- return ResponseMessage.error(Constant.USER_INVALID);
- } catch (LockedAccountException e) {
- log.info("对用户进行登录验证..验证未通过,账户已锁定! username = {}", username);
- return ResponseMessage.error(Constant.USER_HAS_REGISTERING);
- } catch (ExcessiveAttemptsException eae) {
- log.info("对用户进行登录验证..验证未通过,错误次数过多! username = {}", username);
- return ResponseMessage.error(Constant.USER_ERROR_MANY);
- } catch (AuthenticationException e) {
- return ResponseMessage.error(Constant.SYSTEM_ERRORS);
- } catch (Exception e) {
- log.error("对用户进行登录验证失败! username = {} e = {}", username, e);
- }
- return ResponseMessage.error(Constant.SYSTEM_ERRORS);
- }
- @OperationLog(value = "第三方用户使用Code登录")
- @PostMapping(value = "/loginByCode")
- @ResponseBody
- public ResponseMessage loginByCode(@RequestBody ThirdLoginDto login) {
- String code = login.getCode();
- try {
- //根据code拿到token
- EpointTokenDto epointTokenDto = homeRefactorService.getTokenByCode(code);
- String accessToken = epointTokenDto.getAccess_token();
- if (StrUtil.isBlank(accessToken)) {
- return ResponseMessage.error(Constant.USER_CODE_INVALIAD);
- }
- //根据token与库里对比拿用户
- User user = homeRefactorService.getCurrentLoginUser(accessToken);
- if (user != null) {
- String username = user.getNick_name();
- //获取当前的Subject
- Subject currentUser = ShiroUtils.getSubject();
- UsernamePasswordToken token = new UsernamePasswordToken(username, null, false, true);
- //在调用了login方法后,SecurityManager会收到AuthenticationToken,并将其发送给已配置的Realm执行必须的认证检查
- //每个Realm都能在必要时对提交的AuthenticationTokens作出反应
- //所以这一步在调用login(token)方法时,它会走到MyRealm.doGetAuthenticationInfo()方法中,具体验证方式详见此方法
- log.info("对用户进行登录验证..验证开始! username = {}", username);
- currentUser.login(token);
- //验证是否登录成功
- if (currentUser.isAuthenticated()) {
- log.info("对用户进行登录验证..验证通过! username = {}", username);
- ModelMap modelMap = new ModelMap();
- this.commonObject(modelMap, false);
- //User user = userService.getUser(ShiroUtils.getUserId());
- if ((user.getPhone() == null || "".equals(user.getPhone()))) {
- return ResponseMessage.success(Constant.USER_PHONE_EMPTY, user);
- }
- //获取token
- modelMap.put("token", userService.createToken());
- return ResponseMessage.success(Constant.USER_LOGIN_IN, modelMap);
- }
- } else {
- return ResponseMessage.error(Constant.USER_NOT_FIND);
- }
- } catch (UnknownAccountException e) { //账号不存在
- //log.info("! username = {}", username);
- return ResponseMessage.error(Constant.USER_NOT_FIND);
- } catch (IncorrectCredentialsException e) {
- //log.info("对用户进行登录验证..验证未通过,错误的凭证! username = {}", username);
- return ResponseMessage.error(Constant.USER_INVALID);
- } catch (LockedAccountException e) {
- //log.info("对用户进行登录验证..验证未通过,账户已锁定! username = {}", username);
- return ResponseMessage.error(Constant.USER_HAS_REGISTERING);
- } catch (ExcessiveAttemptsException eae) {
- //log.info("对用户进行登录验证..验证未通过,错误次数过多! username = {}", username);
- return ResponseMessage.error(Constant.USER_ERROR_MANY);
- } catch (AuthenticationException e) {
- return ResponseMessage.error(Constant.SYSTEM_ERRORS);
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- return ResponseMessage.error(Constant.SYSTEM_ERRORS);
- }
- /**
- * 用户登出
- * 20200514 新门户使用
- */
- @OperationLog(value = "用户登出")
- @GetMapping(value = "/logout")
- @ResponseBody
- public ResponseMessage logout() {
- ShiroUtils.logout();
- CompletableFuture.runAsync(() -> {
- //todo 远程调用登出逻辑
- }, ThreadPoolUtil.getInstance());
- return ResponseMessage.success("登出成功!");
- }
- /**
- * 账号名是否存在
- */
- @ResponseBody
- @GetMapping(value = "/existNickName")
- public ResponseMessage getNickName(@RequestParam("nick_name") String nickName) {
- boolean flag = false;
- log.debug("检验账号名是否存在! id= {}, nickName= {}", nickName);
- User record = userService.findByNickName(nickName);
- if (null != record) {
- flag = true;
- }
- log.info("检验账号名是否存在! flag = {}", flag);
- return ResponseMessage.success("success", flag);
- }
- /**
- * 企业名是否存在
- */
- @ResponseBody
- @GetMapping(value = "/existCompanyName")
- public ResponseMessage getCompanyName(@RequestParam("company_name") String companyName) {
- boolean flag = false;
- log.debug("检验企业名是否存在! id= {}, companyName= {}", companyName);
- User user = new User();
- user.setDel_flag(false);
- user.setCompany_name(companyName);
- List<User> list = userService.findListByWhere(user);
- if (CommonUtils.isNotNull(list)) {
- flag = true;
- }
- log.info("检验企业名是否存在! flag = {}", flag);
- return ResponseMessage.success("success", flag);
- }
- //企业注册审核待办
- private void addWaitToDo(Company information) {
- if (null != information.getStreet_id()) {
- List<User> users = userService.findUsersByStreetId(information.getStreet_id());
- List<User> pusers = userService.findUsersByPermission("REGISTER_APPROVE");
- for (User user : users) {
- for (User puser : pusers) {
- if (Objects.equals(user.getId(), puser.getId())) {
- waitToDoService.newTODO("企业注册审核", "/register/approval?id=" + information.getId(), Constant.WaitToDo_OperType.AUDIT, information.getId(),
- Constant.DictionaryType.COMPANY_REGISTER, "", user.getId().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
- //发送短信提醒
- Map<String, String> params = new HashMap<>();
- params.put("companyName", information.getCompany_name());
- String templatCode = Constant.SMS_TemplateCode.S_REGISTER_REMIND;
- String templateParam = JSONObject.toJSONString(params);
- try {
- AlibabaSMSUtil.sendSMS(puser.getPhone(), templatCode, Constant.SINGNAMW, templateParam);
- } catch (ClientException | InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- @PutMapping("/complete")
- @OperationLog("完善手机号")
- @ResponseBody
- public ResponseMessage complete(@RequestBody User userInfo) throws Exception {
- try {
- if (!verificationCodeUtil.validateVerificationCode(userInfo.getPhone(), userInfo.getValidateNum())) {
- return ResponseMessage.error("验证码错误!");
- }
- User user = new User();
- user.setId(userInfo.getId());
- /*user.setUser_name(userInfo.getUser_name());
- user.setNick_name(userInfo.getNick_name());*/
- user.setPhone(userInfo.getPhone());
- userService.updateSelective(user);
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseMessage.error("注册失败" + e.getMessage());
- }
- return ResponseMessage.success("完善信息成功!请重新登录!");
- }
- public void commonObject(ModelMap modelMap, Boolean isNav) throws Exception {
- Logo logo = logoService.findLogo();
- modelMap.put("fileUrl", setFileUrl());
- modelMap.put("logo", logo);
- modelMap.put("isLogin", ShiroUtils.isLogin());
- modelMap.put("userType", ShiroUtils.getUserType());
- modelMap.put("userName", ShiroUtils.getNickName());
- modelMap.put("userId", ShiroUtils.getUserId());
- User user = ShiroUtils.getUserEntity();
- if (user != null) {
- modelMap.put("firstLogin", user.getFist_login());
- if (org.apache.commons.lang3.StringUtils.isBlank(user.getUser_name()) || org.apache.commons.lang3.StringUtils.isBlank(user.getNick_name()) || StringUtils.isBlank(user.getPhone())) {
- modelMap.put("isComplete", false);
- } else {
- modelMap.put("isComplete", true);
- }
- }
- //获取有亲链接
- List<FriendLink> friendLinks = friendLinkService.findList();
- modelMap.put("friendLinks", friendLinks);
- if (isNav) {
- // 获取导航
- List<Navigation> navigations = navigationService.findList();
- modelMap.put("navigations", navigations);
- }
- }
- /**
- * 随机获取n个有图片的通知
- */
- @OperationLog(value = "随机获取n个有图片的通知")
- @GetMapping(value = "/content/random/{num}")
- @ResponseBody
- public ResponseMessage random(@PathVariable("num") Integer num) {
- ModelMap modelMap = new ModelMap();
- List<Map> list = contentService.randomPic(num);
- String fileUrl = setFileUrl();
- fileUrl = fileUrl.replace("/uploads", "");
- modelMap.put("fileUrl", fileUrl);
- modelMap.put("contentList", list);
- return ResponseMessage.success("success", modelMap);
- }
- /**
- * 获取存量用地后台跳转链接
- */
- @OperationLog(value = "获取存量用地后台跳转链接")
- @GetMapping(value = "/stockland/url")
- @ResponseBody
- public ResponseMessage stocklandUrl(HttpServletRequest request) {
- String authorization = request.getHeader("Authorization");
- if (StringUtils.isEmpty(authorization)) {
- throw new NullPointerException("token不能为空");
- }
- if (!authorization.startsWith("Bearer")) {
- throw new UnsupportedTokenException("token不合法");
- }
- String verifyToken = authorization.substring(7, authorization.length());
- //验证JWT的签名,返回CheckResult对象
- CheckResult checkResult = JWTUtil.validateJWT(verifyToken);
- if (checkResult.getSuccess()) {
- Claims claims = checkResult.getClaims();
- String token_key = claims.getIssuer();
- String usertId = claims.getId();
- HashOperations<String, String, Object> hashOperations = redisTemplate.opsForHash();
- String token = (String) hashOperations.get(carrier_hash_key, token_key);
- if (token != null && !token.equals(authorization)) {
- return ResponseMessage.error("无效的token");
- }
- //获取用户权限
- //获取主身份信息
- User user = userService.findById(Integer.parseInt(usertId));
- if (user != null) {
- List<Menu> menus;
- if (user.getIs_admin()) {
- Menu menu = new Menu();
- menu.setUser_type(user.getUser_type());
- menus = menuService.findListByWhere(menu);
- } else {
- menus = menuService.findListMenuByUserId(user.getId(), user.getUser_type());
- }
- //单独定一个集合对象
- Map<String, String> map = new HashMap<>();
- if (menus != null) {
- for (Menu permission : menus) {
- if (Objects.equals(permission.getPermission(), "C_STOCKLAND_MANAGE")) {
- map.put("moudle", "C_SERVICE_MANAGE");
- map.put("menu", permission.getPermission());
- } else if (Objects.equals(permission.getPermission(), "S_AREA_APPROVE")) {
- map.put("moudle", "S_SERVICE_MANAGE");
- map.put("menu", permission.getPermission());
- } else if (Objects.equals(permission.getPermission(), "G_APPROVAL_PENDING")) {
- map.put("moudle", "G_SERVICE_MANAGE");
- map.put("menu", permission.getPermission());
- }
- }
- }
- return ResponseMessage.success("success", map);
- } else {
- return ResponseMessage.error(",用户不存在");
- }
- } else {
- return ResponseMessage.error(checkResult.getErrCode() + ",token校验失败");
- }
- }
- }
|