Răsfoiți Sursa

fixed 记录会员注册IP等扩展信息的功能迭代

fushengqian 1 săptămână în urmă
părinte
comite
5d6cc4a757

+ 1 - 0
db/fuint-db.sql

@@ -1054,6 +1054,7 @@ CREATE TABLE `mt_user` (
   `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
   `STATUS` char(1) DEFAULT 'A' COMMENT '状态,A:激活;N:禁用;D:删除',
   `DESCRIPTION` varchar(255) DEFAULT '' COMMENT '备注信息',
+  `IP` varchar(20) DEFAULT '' COMMENT '注册IP',
   `OPERATOR` varchar(30) DEFAULT '' COMMENT '最后操作人',
   PRIMARY KEY (`ID`),
   KEY `index_phone` (`MOBILE`)

+ 4 - 0
fuint-application/src/main/java/com/fuint/common/dto/UserDto.java

@@ -105,6 +105,10 @@ public class UserDto implements Serializable {
     @ApiModelProperty("备注信息")
     private String description;
 
+
+    @ApiModelProperty("注册IP")
+    private String ip;
+
     @ApiModelProperty("最后操作人")
     private String operator;
 

+ 4 - 2
fuint-application/src/main/java/com/fuint/common/service/MemberService.java

@@ -27,9 +27,10 @@ public interface MemberService extends IService<MtUser> {
      * 更新活跃时间
      *
      * @param userId 会员ID
+     * @param ip IP地址
      * @return
      * */
-    Boolean updateActiveTime(Integer userId) throws BusinessCheckException;
+    Boolean updateActiveTime(Integer userId, String ip) throws BusinessCheckException;
 
     /**
      * 获取当前操作会员信息
@@ -74,10 +75,11 @@ public interface MemberService extends IService<MtUser> {
      * @param  merchantId 商户ID
      * @param  mobile 手机号
      * @param  shareId 分享用户ID
+     * @param ip IP地址
      * @throws BusinessCheckException
      * @return
      */
-    MtUser addMemberByMobile(Integer merchantId, String mobile, String shareId) throws BusinessCheckException;
+    MtUser addMemberByMobile(Integer merchantId, String mobile, String shareId, String ip) throws BusinessCheckException;
 
     /**
      * 根据会员ID获取会员信息

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/CouponGroupServiceImpl.java

@@ -383,7 +383,7 @@ public class CouponGroupServiceImpl extends ServiceImpl<MtCouponGroupMapper, MtC
         for (CouponCellDto dto : rows) {
             MtUser userInfo = memberService.queryMemberByMobile(dto.getMerchantId(), dto.getMobile());
             if (userInfo == null) {
-                userInfo = memberService.addMemberByMobile(dto.getMerchantId(), dto.getMobile(), "0");
+                userInfo = memberService.addMemberByMobile(dto.getMerchantId(), dto.getMobile(), "0", "");
             }
 
             if (null == userInfo || !userInfo.getStatus().equals(StatusEnum.ENABLED.getKey())) {

+ 12 - 3
fuint-application/src/main/java/com/fuint/common/service/impl/MemberServiceImpl.java

@@ -103,16 +103,21 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
     /**
      * 更新活跃时间
      * @param userId 会员ID
+     * @param ip IP地址
      * @return
      * */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean updateActiveTime(Integer userId) throws BusinessCheckException {
+    public Boolean updateActiveTime(Integer userId, String ip) throws BusinessCheckException {
         MtUser mtUser = queryMemberById(userId);
         if (mtUser != null) {
             if (!mtUser.getStatus().equals(StatusEnum.ENABLED.getKey())) {
                 return false;
             }
+            if (StringUtil.isEmpty(mtUser.getIp())) {
+                mtUser.setIp(ip);
+                mtUserMapper.updateById(mtUser);
+            }
             Date lastUpdateTime = mtUser.getUpdateTime();
             Date registerTime = mtUser.getCreateTime();
             if (lastUpdateTime != null) {
@@ -502,13 +507,14 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
      * @param merchantId 商户ID
      * @param  mobile 手机号
      * @param  shareId 分享用户ID
+     * @param ip IP地址
      * @throws BusinessCheckException
      * @return
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
     @OperationServiceLog(description = "通过手机号新增会员")
-    public MtUser addMemberByMobile(Integer merchantId, String mobile, String shareId) throws BusinessCheckException {
+    public MtUser addMemberByMobile(Integer merchantId, String mobile, String shareId, String ip) throws BusinessCheckException {
         MtUser mtUser = new MtUser();
         mtUser.setUserNo(CommonUtil.createUserNo());
         String nickName = mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
@@ -529,6 +535,7 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
         mtUser.setMerchantId(merchantId);
         mtUser.setStoreId(0);
         mtUser.setSource(MemberSourceEnum.MOBILE_LOGIN.getKey());
+        mtUser.setIp(ip);
         mtUserMapper.insert(mtUser);
         mtUser = queryMemberByMobile(merchantId, mobile);
 
@@ -671,6 +678,7 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
         String shareId = StringUtil.isNotEmpty(userInfo.getString("shareId")) ? userInfo.getString("shareId") : "0";
         String source = StringUtil.isNotEmpty(userInfo.getString("source")) ? userInfo.getString("source") : MemberSourceEnum.WECHAT_LOGIN.getKey();
         String platform = StringUtil.isNotEmpty(userInfo.getString("platform")) ? userInfo.getString("platform") : "";
+        String ip = StringUtil.isNotEmpty(userInfo.getString("ip")) ? userInfo.getString("ip") : "";
 
         // 需要手机号登录
         if (StringUtil.isEmpty(mobile) && user == null && !platform.equals(PlatformTypeEnum.H5.getCode())) {
@@ -725,7 +733,6 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
                 mtUser.setGradeId(grade.getId() + "");
             }
             Date time = new Date();
-            mtUser.setCreateTime(time);
             mtUser.setUpdateTime(time);
             mtUser.setBalance(new BigDecimal(0));
             mtUser.setPoint(0);
@@ -747,6 +754,8 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
             }
             mtUser.setSource(source);
             if (mtUser.getId() == null || mtUser.getId() <= 0) {
+                mtUser.setCreateTime(time);
+                mtUser.setIp(ip);
                 save(mtUser);
             } else {
                 updateById(mtUser);

+ 2 - 2
fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java

@@ -664,6 +664,7 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
         Integer storeId = request.getHeader("storeId") == null ? 0 : Integer.parseInt(request.getHeader("storeId"));
         String platform = request.getHeader("platform") == null ? "" : request.getHeader("platform");
         String merchantNo = request.getHeader("merchantNo") == null ? "" : request.getHeader("merchantNo");
+        String ip = CommonUtil.getIPFromHttpRequest(request);
         String cartIds = param.getCartIds() == null ? "" : param.getCartIds();
         Integer targetId = param.getTargetId() == null ? 0 : Integer.parseInt(param.getTargetId()); // 储值卡、升级等级必填
         String selectNum = param.getSelectNum() == null ? "" : param.getSelectNum(); // 储值卡必填
@@ -745,7 +746,7 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
                 userInfo = memberService.queryMemberByMobile(merchantId, mobile);
                 // 自动注册会员
                 if (userInfo == null) {
-                    userInfo = memberService.addMemberByMobile(merchantId, mobile, "0");
+                    userInfo = memberService.addMemberByMobile(merchantId, mobile, "0", ip);
                 }
             }
         }
@@ -982,7 +983,6 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
 
         // 生成支付订单
         orderInfo = getOrderInfo(orderInfo.getId());
-        String ip = CommonUtil.getIPFromHttpRequest(request);
         BigDecimal realPayAmount = orderInfo.getAmount().subtract(new BigDecimal(orderInfo.getDiscount().toString())).subtract(new BigDecimal(orderInfo.getPointAmount().toString())).add(orderInfo.getDeliveryFee());
 
         // 支付类的订单,检查余额是否充足

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/PointServiceImpl.java

@@ -226,7 +226,7 @@ public class PointServiceImpl extends ServiceImpl<MtPointMapper, MtPoint> implem
         MtUser fUserInfo = memberService.queryMemberByMobile(userInfo.getMerchantId(), mobile);
         // 自动注册会员
         if (fUserInfo == null) {
-            fUserInfo = memberService.addMemberByMobile(userInfo.getMerchantId(), mobile, userId.toString());
+            fUserInfo = memberService.addMemberByMobile(userInfo.getMerchantId(), mobile, userId.toString(), "");
         }
 
         if (fUserInfo == null) {

+ 3 - 1
fuint-application/src/main/java/com/fuint/common/web/ClientUserInterceptor.java

@@ -3,6 +3,7 @@ package com.fuint.common.web;
 import com.fuint.common.Constants;
 import com.fuint.common.dto.UserInfo;
 import com.fuint.common.service.MemberService;
+import com.fuint.common.util.CommonUtil;
 import com.fuint.common.util.TokenUtil;
 import com.fuint.utils.PropertiesUtil;
 import org.slf4j.Logger;
@@ -53,7 +54,8 @@ public class ClientUserInterceptor implements AsyncHandlerInterceptor {
         if (loginInfo != null) {
             if (!StringUtils.isEmpty(loginInfo.getToken()) && loginInfo.getToken().equals(accessToken)) {
                 // 更新活跃时间
-                boolean isActive = memberService.updateActiveTime(loginInfo.getId());
+                String ip = CommonUtil.getIPFromHttpRequest(request);
+                boolean isActive = memberService.updateActiveTime(loginInfo.getId(), ip);
                 if (!isActive && requestURI.indexOf("/system/config") < 0) {
                     return false;
                 }

+ 7 - 2
fuint-application/src/main/java/com/fuint/module/clientApi/controller/ClientSignController.java

@@ -8,6 +8,7 @@ import com.fuint.common.enums.MemberSourceEnum;
 import com.fuint.common.enums.StatusEnum;
 import com.fuint.common.enums.YesOrNoEnum;
 import com.fuint.common.service.*;
+import com.fuint.common.util.CommonUtil;
 import com.fuint.common.util.TokenUtil;
 import com.fuint.framework.exception.BusinessCheckException;
 import com.fuint.framework.web.BaseController;
@@ -150,6 +151,7 @@ public class ClientSignController extends BaseController {
         String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
         Integer merchantId = merchantService.getMerchantId(merchantNo);
         JSONObject userInfo = weixinService.getWxOpenId(merchantId, param.get("code").toString());
+        String ip = CommonUtil.getIPFromHttpRequest(request);
         if (userInfo == null) {
             return getFailureResult(201, "微信公众号授权失败");
         }
@@ -159,6 +161,7 @@ public class ClientSignController extends BaseController {
         userInfo.put("storeId", storeId);
         userInfo.put("shareId", shareId);
         userInfo.put("platform", platform);
+        userInfo.put("ip", ip);
 
         MtUser mtUser = memberService.queryMemberByOpenId(merchantId, userInfo.get("openid").toString(), userInfo);
         if (mtUser == null) {
@@ -196,7 +199,7 @@ public class ClientSignController extends BaseController {
         String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
         Integer storeId = request.getHeader("storeId") == null ? 0 : Integer.parseInt(request.getHeader("storeId"));
         String userAgent = request.getHeader("user-agent") == null ? "" : request.getHeader("user-agent");
-
+        String ip = CommonUtil.getIPFromHttpRequest(request);
         if (StringUtil.isEmpty(account)) {
             return getFailureResult(201,"用户名不能为空");
         }
@@ -225,6 +228,7 @@ public class ClientSignController extends BaseController {
         mtUser.setMobile("");
         mtUser.setDescription("会员自行注册新账号");
         mtUser.setIsStaff(YesOrNoEnum.NO.getKey());
+        mtUser.setIp(ip);
         MtUser userInfo = memberService.addMember(mtUser, shareId);
 
         if (userInfo != null) {
@@ -271,6 +275,7 @@ public class ClientSignController extends BaseController {
         String captchaCode = param.get("captchaCode") == null ? "" : param.get("captchaCode").toString();
         String uuid = param.get("uuid") == null ? "" : param.get("uuid").toString();
         String shareId = param.get("shareId") == null ? "0" : param.get("shareId").toString();
+        String ip = CommonUtil.getIPFromHttpRequest(request);
         TokenDto dto = new TokenDto();
         MtUser mtUser = null;
         Integer merchantId = merchantService.getMerchantId(merchantNo);
@@ -295,7 +300,7 @@ public class ClientSignController extends BaseController {
             // 2、写入token redis session
             if (mtVerifyCode != null) {
                 if (null == mtUser) {
-                    memberService.addMemberByMobile(merchantId, mobile, shareId);
+                    memberService.addMemberByMobile(merchantId, mobile, shareId, ip);
                     mtUser = memberService.queryMemberByMobile(merchantId, mobile);
                 }
 

+ 3 - 0
fuint-repository/src/main/java/com/fuint/repository/model/MtUser.java

@@ -112,6 +112,9 @@ public class MtUser implements Serializable {
     @ApiModelProperty("备注信息")
     private String description;
 
+    @ApiModelProperty("注册IP")
+    private String ip;
+
     @ApiModelProperty("最后操作人")
     private String operator;
 }

+ 1 - 1
fuint-repository/src/main/resources/mapper/MtUserMapper.xml

@@ -32,7 +32,7 @@
     </select>
 
     <update id="updateActiveTime">
-        update mt_user t set t.UPDATE_TIME = #{updateTime} where t.ID = #{userId}
+        update mt_user t set t.UPDATE_TIME = #{updateTime}s where t.ID = #{userId}
     </update>
 
     <update id="updateUserBalance">