zhouxianguang 6 vuotta sitten
vanhempi
commit
963f8dae84

+ 2 - 0
rankin-api-web/src/main/java/cn/rankin/apiweb/controller/LoginController.java

@@ -27,6 +27,7 @@ public class LoginController {
 
     @RequestMapping(method = RequestMethod.POST)
     public APIResult<UserInfoVo> login(HttpServletRequest request, @Valid @RequestBody LoginInfoDTO loginInfoDTO) {
+
         String ip = HttpUtil.getClientIp(request);
         loginInfoDTO.setIp(ip);
         loginInfoDTO.setTerminal(request.getHeader("terminal"));
@@ -54,4 +55,5 @@ public class LoginController {
         String userId = globalHeader.getUid();
         return userService.logout(userId);
     }
+
 }

+ 14 - 0
rankin-api-web/src/main/java/cn/rankin/apiweb/service/user/UserClient.java

@@ -9,6 +9,7 @@ import cn.rankin.data.api.user.entity.UserTag;
 import cn.rankin.data.api.user.entity.UserTagProductRelation;
 import cn.rankin.data.api.user.vo.TerminalDeviceVo;
 import cn.rankin.data.api.user.vo.TerminalUserVo;
+import cn.rankin.data.api.user.vo.UserDeviceVo;
 import cn.rankin.data.api.user.vo.WhiteUserVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.stereotype.Component;
@@ -57,6 +58,13 @@ public interface UserClient {
     @RequestMapping(value = "/userTag/{tagId}", method = RequestMethod.GET)
     UserTag findUserTagById(@PathVariable("tagId")  String tagId);
 
+
+    @RequestMapping(value = "/userDevice/bindingDevice/{uid}", method = RequestMethod.GET)
+    UserDeviceVo findUserDevice(@PathVariable("uid")  String uid,
+                                 @RequestParam("deviceCode") String deviceCode,
+                                 @RequestParam("deviceType") String deviceType);
+
+
     @RequestMapping(value = "/userTagProductRelation/page/pids", method = RequestMethod.POST)
     Page<UserTagProductRelation> findRelations(@RequestParam("userTagId") String userTagId,
                                                @RequestBody List<String> productIdList,
@@ -127,6 +135,12 @@ public interface UserClient {
         }
 
         @Override
+        public UserDeviceVo findUserDevice(String uid, String deviceCode, String deviceType)
+        {
+            return null;
+        }
+
+        @Override
         public Page<UserTagProductRelation> findRelations(String userTagId,
                                                           List<String> productIdList,
                                                           Integer pageNo,

+ 4 - 1
rankin-api-web/src/main/java/cn/rankin/apiweb/service/user/UserService.java

@@ -58,6 +58,7 @@ public class UserService {
 
     public APIResult<UserInfoVo> login(LoginInfoDTO loginInfoDTO) {
         String deviceCode = loginInfoDTO.getDeviceCode();
+        String deviceType = loginInfoDTO.getDeviceType();
         String merchant = loginInfoDTO.getMerchant();
         String eid = loginInfoDTO.getEid();
         String loginPassword = loginInfoDTO.getPassword();
@@ -70,7 +71,9 @@ public class UserService {
             return APIResult.error(ApiWebCode.LOGIN_ERROR);
         }
 
-
+        //查询登陆用户是否记录用户登录手机产品商
+        String uid = userVo.getId();
+        userClient.findUserDevice(uid,deviceCode,deviceType);
 
         String storePassword = userVo.getPassword();
         if (!SecurityManager.validate(loginPassword, storePassword)) {

+ 50 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/user/entity/UserDevice.java

@@ -0,0 +1,50 @@
+package cn.rankin.data.api.user.entity;
+
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.enums.EventTypeEnum;
+import cn.rankin.common.utils.enums.PlatformTypeEnum;
+import lombok.Data;
+import lombok.ToString;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+
+@Data
+@ToString
+@Entity
+@Table(name = "u_user_device")
+@DynamicInsert
+@DynamicUpdate
+public class UserDevice implements Serializable {
+    @Id
+    @Column(name="id")
+    private String id;
+
+    @Column(name="user_id")
+    private String userId;
+
+    @Column(name="device_code")
+    private String deviceCode;
+
+    @Column(name="device_type")
+    private String deviceType;
+
+    @Column(name="binding_num")
+    private int bindingNum;
+
+    @Column(name = "gmt_created", updatable = false, insertable = false, columnDefinition = "timestamp NULL DEFAULT CURRENT_TIMESTAMP")
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date gmtCreated;
+
+    @Column(name = "gmt_modified", updatable = false, insertable = false, columnDefinition = "timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date gmtModified;
+
+}
+
+
+

+ 31 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/user/vo/UserDeviceVo.java

@@ -0,0 +1,31 @@
+package cn.rankin.data.api.user.vo;
+
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ToString
+public class UserDeviceVo implements Serializable {
+
+    private String id;
+
+    private String userId;
+
+    private String deviceCode;
+
+    private String deviceType;
+
+    private Integer bindingNum = 0;
+
+    private Date createTime;
+
+    private Date updateTime;
+}

+ 53 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/controller/UserDeviceController.java

@@ -0,0 +1,53 @@
+package cn.rankin.userservice.controller;
+
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.enums.EventTypeEnum;
+import cn.rankin.data.api.user.dto.DownloadInfoDTO;
+import cn.rankin.data.api.user.entity.DownloadInfo;
+import cn.rankin.data.api.user.entity.UserDevice;
+import cn.rankin.userservice.helper.RaStringHelper;
+import cn.rankin.userservice.service.DownloadInfoService;
+import cn.rankin.userservice.service.UserDeviceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "/userDevice")
+public class UserDeviceController
+{
+
+    @Autowired
+    private UserDeviceService userDeviceService;
+
+
+    @RequestMapping(value = "/bindingDevice/{uid}", method = RequestMethod.GET)
+    public UserDevice bindingDevice(@PathVariable("uid") String uid,
+                                         @RequestParam("deviceCode") String deviceCode,
+                                         @RequestParam("deviceType") String deviceType){
+
+        if(RaStringHelper.isNull(uid))
+        {
+            return null;
+        }
+        if(RaStringHelper.isNull(deviceCode))
+        {
+            return null;
+        }
+        if(RaStringHelper.isNull(deviceType))
+        {
+            return null;
+        }
+
+        UserDevice userDevice = userDeviceService.findDevice(uid,deviceCode,deviceType);
+        if(userDevice!=null)
+        {
+            int bindingNum = userDevice.getBindingNum()+1;
+            userDeviceService.updateDevice(uid,deviceCode,deviceType,bindingNum);
+        }
+
+        return userDevice;
+    }
+
+}

+ 37 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/helper/RaStringHelper.java

@@ -0,0 +1,37 @@
+package cn.rankin.userservice.helper;
+
+/**
+ * The helper of string
+ */
+public class RaStringHelper
+{
+    /**
+     * Is null
+     * @param str the string
+     * @return true or false
+     */
+    public static boolean isNull(String str)
+    {
+        if(str == null || str.trim() == "")
+        {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Is null
+     * @param str the string
+     * @return true or false
+     */
+    public static boolean isNotNull(String str)
+    {
+        if(str != null && str.trim() == "")
+        {
+            return true;
+        }
+
+        return false;
+    }
+}

+ 23 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/repository/UserDeviceRepository.java

@@ -0,0 +1,23 @@
+package cn.rankin.userservice.repository;
+
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.enums.EventTypeEnum;
+import cn.rankin.common.utils.jpa.BasicJpaRepository;
+import cn.rankin.data.api.user.entity.DownloadInfo;
+import cn.rankin.data.api.user.entity.UserDevice;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface UserDeviceRepository extends BasicJpaRepository<UserDevice, String> {
+
+    @Query(value = "select device from UserDevice device where device.userId = ?1 AND device.deviceCode= ?2 AND device.deviceType = ?3")
+    UserDevice findUserDevice(String uid, String deviceCode,String deviceType);
+
+    @Transactional
+    @Modifying
+    @Query(value = "update UserDevice device set device.bindingNum = ?4 where device.userId = ?1 AND device.deviceCode= ?2 AND device.deviceType = ?3")
+    int updateDevice(String uid, String deviceCode,String deviceType,int bindingNum);
+}

+ 85 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/service/UserDeviceService.java

@@ -0,0 +1,85 @@
+package cn.rankin.userservice.service;
+
+import cn.rankin.data.api.user.entity.UserDevice;
+import cn.rankin.userservice.helper.RaStringHelper;
+import cn.rankin.userservice.repository.UserDeviceRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+@Service
+public class UserDeviceService
+{
+    @Autowired
+    private UserDeviceRepository userDeviceRepository;
+
+    /**
+     * Find user deceive
+     * @param uid the user id
+     * @param deviceCode the device code
+     * @param deviceType the device type
+     * @return the entity of user device
+     */
+    public UserDevice findDevice(String uid,String deviceCode,String deviceType)
+    {
+        if(RaStringHelper.isNull(uid))
+        {
+            return null;
+        }
+        if(RaStringHelper.isNull(deviceCode))
+        {
+            return null;
+        }
+        if(RaStringHelper.isNull(deviceType))
+        {
+            return null;
+        }
+
+        UserDevice userDevice = userDeviceRepository.findUserDevice(uid,deviceCode,deviceType);
+        if(userDevice != null)
+        {
+            return userDevice;
+        }
+        else
+            {
+            userDevice = new UserDevice();
+            userDevice.setUserId(uid);
+            userDevice.setGmtCreated(new Date());
+            userDevice.setDeviceCode(deviceCode);
+            userDevice.setDeviceType(deviceType);
+            userDevice.setBindingNum(1);
+            userDeviceRepository.save(userDevice);
+
+            return null;
+        }
+    }
+
+    /**
+     * Find user deceive
+     * @param uid the user id
+     * @param deviceCode the device code
+     * @param deviceType the device type
+     * @return the entity of user device
+     */
+    public int updateDevice(String uid,String deviceCode,String deviceType,int bingdingNum)
+    {
+        if(RaStringHelper.isNull(uid))
+        {
+            return 0;
+        }
+        if(RaStringHelper.isNull(deviceCode))
+        {
+            return 0;
+        }
+        if(RaStringHelper.isNull(deviceType))
+        {
+            return 0;
+        }
+
+        int updateRet = userDeviceRepository.updateDevice(uid,deviceCode,deviceType,bingdingNum);
+
+        return   updateRet;
+    }
+
+}