From 466a4c6abf800e8202a216d54ace722c1f8b8416 Mon Sep 17 00:00:00 2001 From: czc Date: Wed, 26 Jul 2023 14:55:29 +0800 Subject: [PATCH] =?UTF-8?q?H5=E7=99=BB=E5=BD=95=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 2 +- .../ruoyi/common/utils/ip/AddressUtils.java | 7 +++- .../cyl/h5/controller/H5MemberController.java | 18 ++++++++ .../com/cyl/h5/service/H5MemberService.java | 41 +++++++++++++++++-- 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9378180..4e22218 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -11,7 +11,7 @@ ruoyi: # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: C:/ruoyi/uploadPath # 获取ip地址开关 - addressEnabled: false + addressEnabled: true # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 前端请求的 跟踪 header name diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java index 01c24fc..8c8728a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java @@ -44,7 +44,8 @@ public class AddressUtils JSONObject obj = JSONObject.parseObject(rspStr); String region = obj.getString("pro"); String city = obj.getString("city"); - return String.format("%s %s", region, city); + String operator = ((String)obj.get("addr")).split(" ")[1]; + return String.format("%s|%s|%s", region, city, operator); } catch (Exception e) { @@ -53,4 +54,8 @@ public class AddressUtils } return address; } + + public static void main(String[] args) { + System.out.println("地址:" + getRealAddressByIP("14.125.8.236")); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java index ad4020d..e3bbe96 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java @@ -8,17 +8,25 @@ import com.cyl.h5.service.H5MemberService; import com.cyl.manager.ums.pojo.vo.MemberVO; import com.cyl.wechat.WechatAuthService; import com.cyl.wechat.response.WechatUserAuth; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.framework.web.service.TokenService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; + @RestController @RequestMapping("/h5") public class H5MemberController { @Autowired private H5MemberService service; + @Autowired + private TokenService tokenService; @ApiOperation("会员注册") @@ -56,4 +64,14 @@ public class H5MemberController { public void setWechatInfo(@RequestBody String data){ service.setWechatInfo(data); } + + @ApiOperation("新增会员登录记录") + @Log(title = "会员登录记录", businessType = BusinessType.INSERT) + @GetMapping("/record/login") + public void add(HttpServletRequest request) { + LoginMember loginMember = tokenService.getLoginMember(request); + if (loginMember != null){ + service.insert(loginMember.getMemberId()); + } + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java index f807b86..d4e1277 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java @@ -13,21 +13,24 @@ import com.cyl.h5.pojo.response.RegisterResponse; import com.cyl.h5.pojo.response.ValidatePhoneResponse; import com.cyl.h5.pojo.response.H5LoginResponse; import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberLogininfor; import com.cyl.manager.ums.domain.MemberWechat; +import com.cyl.manager.ums.mapper.MemberLogininforMapper; import com.cyl.manager.ums.mapper.MemberMapper; import com.cyl.manager.ums.mapper.MemberWechatMapper; import com.cyl.manager.ums.pojo.vo.MemberVO; +import com.cyl.manager.ums.service.MemberLogininforService; import com.cyl.wechat.WechatAuthService; import com.cyl.wechat.response.WechatUserAuth; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginMember; import com.ruoyi.common.core.redis.RedisCache; -import com.ruoyi.common.utils.AesCryptoUtils; -import com.ruoyi.common.utils.PhoneUtils; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.*; +import com.ruoyi.common.utils.ip.AddressUtils; +import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.framework.config.LocalDataUtil; import com.ruoyi.framework.web.service.TokenService; +import eu.bitwalker.useragentutils.UserAgent; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -61,6 +64,13 @@ public class H5MemberService { @Autowired private MemberWechatMapper memberWechatMapper; + @Autowired + private MemberLogininforService memberLogininforService; + + @Autowired + private MemberLogininforMapper memberLogininforMapper; + + /** * 注册 * @param request 注册请求体 @@ -192,6 +202,7 @@ public class H5MemberService { //校验会员状态 validateMemberStatus(member); } + return getLoginResponse(member.getId()); } @@ -232,6 +243,8 @@ public class H5MemberService { LoginMember loginMember = new LoginMember(); loginMember.setMemberId(memberId); String token = tokenService.createMemberToken(loginMember); + //record登录 + this.insert(memberId); H5LoginResponse response = new H5LoginResponse(); response.setToken(token); return response; @@ -272,4 +285,24 @@ public class H5MemberService { wrapper.set("update_by", member.getId()); memberWechatMapper.update(null, wrapper); } + + /** + * 新增会员登录记录 + * + * @param memberId 会员id + * @return 结果 + */ + public void insert(Long memberId) { + Member member = memberMapper.selectById(memberId); + UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); + MemberLogininfor memberLogininfor = new MemberLogininfor(); + memberLogininfor.setMemberId(memberId); + memberLogininfor.setPhone(member.getPhoneHidden()); + memberLogininfor.setOs(userAgent.getOperatingSystem().getName()); + memberLogininfor.setIpaddr(IpUtils.getIpAddr(ServletUtils.getRequest())); + memberLogininfor.setBrowser(userAgent.getBrowser().getName()); + memberLogininfor.setLoginLocation(AddressUtils.getRealAddressByIP(memberLogininfor.getIpaddr())); + memberLogininfor.setLoginTime(LocalDateTime.now()); + memberLogininforMapper.insert(memberLogininfor); + } }