Explorar el Código

Merge branch 'add-meta-integral' into 'master'

..



See merge request !20

chenxz hace 7 años
padre
commit
d2a6a00916
Se han modificado 17 ficheros con 310 adiciones y 74 borrados
  1. 62 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/configure/IntegralMap.java
  2. 20 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/IntegralMapper.java
  3. 1 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2IntegralDao.java
  4. 1 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2MedalDao.java
  5. 0 20
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserIntegralDao.java
  6. 34 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserIntegralMapper.java
  7. 23 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/Integral.java
  8. 0 10
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/Medal.java
  9. 0 8
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/UserIntegral.java
  10. 14 4
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/IntegralRPC.java
  11. 7 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/IntegralService.java
  12. 52 10
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImpl.java
  13. 16 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/IntegralController.java
  14. 5 5
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java
  15. 9 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/IntegralLogic.java
  16. 64 15
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/IntegralLogicImpl.java
  17. 2 2
      mooctest-user-server/src/test/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImplTest.java

+ 62 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/configure/IntegralMap.java

@@ -0,0 +1,62 @@
+package cn.iselab.mooctest.user.configure;
+
+import cn.iselab.mooctest.user.model.Integral;
+import cn.iselab.mooctest.user.service.IntegralService;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午9:18 2018/5/23
+ * @Modified By:
+ */
+@Data
+@Component
+public class IntegralMap implements ApplicationContextAware{
+
+    public ConcurrentHashMap<String,Integral> map=new ConcurrentHashMap<>();
+
+    @Autowired
+    IntegralService integralService;
+
+    @Override
+    public void setApplicationContext(ApplicationContext ac){
+        integralService= ac.getBean(IntegralService.class);
+        System.out.println(integralService);
+        List<Integral> integrals=integralService.findIntegrals();
+        integrals.forEach(integral -> {
+            if (!map.containsKey(integral.getSource())){
+                map.put(integral.getSource(),integral);
+            }
+        });
+    }
+
+    public Integral get(String event){
+        if (map.containsKey(event)) {
+            return map.get(event);
+        }else {
+            return null;
+        }
+    }
+
+    public Map<String,Integral> reload(){
+        map.clear();
+        List<Integral> integrals=integralService.findIntegrals();
+        integrals.forEach(integral -> {
+            if (!map.containsKey(integral.getSource())){
+                map.put(integral.getSource(),integral);
+            }
+        });
+        return map;
+    }
+}

+ 20 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/IntegralMapper.java

@@ -0,0 +1,20 @@
+package cn.iselab.mooctest.user.mapper;
+
+import cn.iselab.mooctest.user.model.Integral;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午9:22 2018/5/23
+ * @Modified By:
+ */
+@Mapper
+public interface IntegralMapper {
+
+    @Select("select * from integral where is_deleted=0")
+    List<Integral> findAll();
+}

+ 1 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2IntegralDao.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.user.mapper;
 import cn.iselab.mooctest.user.model.User2Integral;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
 
 import javax.transaction.Transactional;
 import java.util.List;

+ 1 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2MedalDao.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.user.mapper;
 import cn.iselab.mooctest.user.model.User2Medal;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
 
 import javax.transaction.Transactional;
 import java.util.List;

+ 0 - 20
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserIntegralDao.java

@@ -1,20 +0,0 @@
-package cn.iselab.mooctest.user.mapper;
-
-import cn.iselab.mooctest.user.model.UserIntegral;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.repository.CrudRepository;
-
-import javax.transaction.Transactional;
-import java.util.List;
-
-/**
- * @Author ROKG
- * @Description
- * @Date: Created in 上午11:40 2018/2/13
- * @Modified By:
- */
-@Transactional
-public interface UserIntegralDao extends CrudRepository<UserIntegral, Long> ,JpaSpecificationExecutor<UserIntegral>{
-
-    List<UserIntegral> findByUserId(long userId);
-}

+ 34 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserIntegralMapper.java

@@ -0,0 +1,34 @@
+package cn.iselab.mooctest.user.mapper;
+
+import cn.iselab.mooctest.user.model.UserIntegral;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午11:40 2018/2/13
+ * @Modified By:
+ */
+@Mapper
+public interface UserIntegralMapper {
+
+    @Select("select * from user_integral where user_id=#{userId}")
+    List<UserIntegral> findByUserId(long userId);
+
+    @Select("select * from user_integral")
+    List<UserIntegral> findAll();
+
+    @Insert("insert into user_integral('user_id','total','enabled','create_time') values(#{userId},#{total},#{enabled},#{createTime})")
+    void save(UserIntegral integral);
+
+    @Update("update user_integral set total=#{total},enabled=#{enabled} where id=#{id}")
+    void update(UserIntegral integral);
+}

+ 23 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/Integral.java

@@ -0,0 +1,23 @@
+package cn.iselab.mooctest.user.model;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午5:08 2018/5/23
+ * @Modified By:
+ */
+@Data
+public class Integral {
+
+    private long id;
+
+    private String source;
+
+    private long point;
+
+    private Timestamp createTime;
+}

+ 0 - 10
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/Medal.java

@@ -12,29 +12,19 @@ import java.sql.Timestamp;
  * @Modified By:
  */
 @Data
-@Entity
-@Table(name = "medal")
 public class Medal {
 
-    @Id
-    @GeneratedValue
     private long id;
 
-    @Column(name = "name")
     private String name;
 
-    @Column(name = "description")
     private String description;
 
-    @Column(name = "img_url")
     private String imgUrl;
 
-    @Column(name = "type")
     private long type;
 
-    @Column(name = "create_time")
     private Timestamp createTime;
 
-    @Column(name = "is_deleted")
     private boolean isDeleted;
 }

+ 0 - 8
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/UserIntegral.java

@@ -12,23 +12,15 @@ import java.sql.Timestamp;
  * @Modified By:
  */
 @Data
-@Entity
-@Table(name = "user_integral")
 public class UserIntegral {
 
-    @Id
-    @GeneratedValue
     private long id;
 
-    @Column(name = "user_id")
     private long userId;
 
-    @Column(name = "total")
     private long total;
 
-    @Column(name = "enabled")
     private boolean enabled;
 
-    @Column(name = "create_time")
     private Timestamp createTime;
 }

+ 14 - 4
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/IntegralRPC.java

@@ -56,13 +56,23 @@ public class IntegralRPC implements IntegralService {
         return integralLogic.getUserIntegrals(keyword);
     }
 
+    /**
+     * check if user's event can bring integral
+     * @param dto
+     * @return
+     */
     @Override
-    public boolean checkIntegral(AddIntegralDTO addIntegralDTO) {
-        return false;
+    public boolean checkIntegral(AddIntegralDTO dto){
+        return integralLogic.addIntegral(dto);
     }
 
+    /**
+     * get user's integral by userId
+     * @param userId
+     * @return
+     */
     @Override
-    public UserIntegralDTO getUserIntegral(Long aLong) {
-        return null;
+    public UserIntegralDTO getUserIntegral(Long userId){
+        return integralLogic.getUserIntegral(userId);
     }
 }

+ 7 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/IntegralService.java

@@ -1,5 +1,6 @@
 package cn.iselab.mooctest.user.service;
 
+import cn.iselab.mooctest.user.model.Integral;
 import cn.iselab.mooctest.user.model.User2Integral;
 import cn.iselab.mooctest.user.model.UserIntegral;
 import org.springframework.data.domain.Page;
@@ -19,9 +20,15 @@ public interface IntegralService {
 
     UserIntegral saveIntegral(UserIntegral userIntegral);
 
+    UserIntegral updateIntegral(UserIntegral userIntegral);
+
     List<UserIntegral> findPage(String keyword);
 
     List<User2Integral> findByTime(long userId, long startTime, long endTime);
 
     User2Integral saveUser2Integral(User2Integral user2Integral);
+
+    List<Integral> findIntegrals();
+
+    User2Integral findIntegralBySource(String source,long userId);
 }

+ 52 - 10
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImpl.java

@@ -1,7 +1,9 @@
 package cn.iselab.mooctest.user.service.impl;
 
+import cn.iselab.mooctest.user.mapper.IntegralMapper;
 import cn.iselab.mooctest.user.mapper.User2IntegralDao;
-import cn.iselab.mooctest.user.mapper.UserIntegralDao;
+import cn.iselab.mooctest.user.mapper.UserIntegralMapper;
+import cn.iselab.mooctest.user.model.Integral;
 import cn.iselab.mooctest.user.model.User2Integral;
 import cn.iselab.mooctest.user.model.UserIntegral;
 import cn.iselab.mooctest.user.service.IntegralService;
@@ -15,6 +17,9 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -27,14 +32,17 @@ import java.util.List;
 public class IntegralServiceImpl implements IntegralService {
 
     @Autowired
-    UserIntegralDao userIntegralDao;
+    UserIntegralMapper userIntegralMapper;
 
     @Autowired
     User2IntegralDao user2IntegralDao;
 
+    @Autowired
+    IntegralMapper integralMapper;
+
     @Override
     public UserIntegral findByUserId(long userId){
-        List<UserIntegral> userIntegrals=userIntegralDao.findByUserId(userId);
+        List<UserIntegral> userIntegrals= userIntegralMapper.findByUserId(userId);
         if(userIntegrals!=null && userIntegrals.size()>0){
             return userIntegrals.get(0);
         }else {
@@ -44,13 +52,19 @@ public class IntegralServiceImpl implements IntegralService {
 
     @Override
     public UserIntegral saveIntegral(UserIntegral userIntegral){
-        return userIntegralDao.save(userIntegral);
+        userIntegralMapper.save(userIntegral);
+        return userIntegral;
+    }
+
+    @Override
+    public UserIntegral updateIntegral(UserIntegral userIntegral){
+        userIntegralMapper.update(userIntegral);
+        return userIntegral;
     }
 
     @Override
     public List<UserIntegral> findPage(String keyword){
-        Specifications<UserIntegral> where=Specifications.where(getUserIntegral(keyword));
-        return userIntegralDao.findAll(where);
+        return userIntegralMapper.findAll();
     }
 
     @Override
@@ -64,6 +78,18 @@ public class IntegralServiceImpl implements IntegralService {
         return user2IntegralDao.save(user2Integral);
     }
 
+    @Override
+    public List<Integral> findIntegrals(){
+        return integralMapper.findAll();
+    }
+
+    @Override
+    public User2Integral findIntegralBySource(String source,long userId){
+        Specifications<User2Integral> where=Specifications.where(checkIntegral(source,userId));
+        List<User2Integral> user2Integrals= user2IntegralDao.findAll(where);
+        return user2Integrals.size()>0?user2Integrals.get(0):null;
+    }
+
     private Specification<User2Integral> getUser2Integral(Timestamp startTime, Timestamp endTime){
         return new Specification<User2Integral>() {
             @Override
@@ -78,13 +104,29 @@ public class IntegralServiceImpl implements IntegralService {
         };
     }
 
-    private Specification<UserIntegral> getUserIntegral(String keyword){
-        return new Specification<UserIntegral>() {
+    private Specification<User2Integral> checkIntegral(String source, long userId){
+        return new Specification<User2Integral>() {
             @Override
-            public Predicate toPredicate(Root<UserIntegral> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
+            public Predicate toPredicate(Root<User2Integral> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                 Predicate p=criteriaBuilder.conjunction();
-                if(keyword!=null){
+                if (source!=null) {
+                    p.getExpressions()
+                            .add(criteriaBuilder.equal(root.get("source"), source));
+                }
+                p.getExpressions()
+                        .add(criteriaBuilder.equal(root.get("userId"),userId));
+                Date date=new Date();
+                SimpleDateFormat time=new SimpleDateFormat("yyyy MM dd");
+                SimpleDateFormat sdfmat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Timestamp start,end;
+                try {
+                    start=new Timestamp(time.parse(time.format(date)).getTime());
+                    end=new Timestamp(time.parse(time.format(date)).getTime()+86400000);
+                }catch (ParseException e){
+                    return p;
                 }
+                p.getExpressions()
+                        .add(criteriaBuilder.between(root.get("createTime"),start,end));
                 return p;
             }
         };

+ 16 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/IntegralController.java

@@ -1,9 +1,12 @@
 package cn.iselab.mooctest.user.web.ctrl;
 
+import cn.iselab.mooctest.rpc.user.data.AddIntegralDTO;
 import cn.iselab.mooctest.rpc.user.data.IntegralCaughtDTO;
 import cn.iselab.mooctest.rpc.user.data.MedalDTO;
 import cn.iselab.mooctest.rpc.user.data.UserIntegralDTO;
+import cn.iselab.mooctest.user.configure.IntegralMap;
 import cn.iselab.mooctest.user.constants.UrlConstants;
+import cn.iselab.mooctest.user.model.Integral;
 import cn.iselab.mooctest.user.web.logic.IntegralLogic;
 import cn.iselab.mooctest.user.web.logic.MedalLogic;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +36,9 @@ public class IntegralController extends BaseController{
     @Autowired
     MedalLogic medalLogic;
 
+    @Autowired
+    IntegralMap integralMap;
+
     @RequestMapping(value = UrlConstants.API_INTEGRAL,method = RequestMethod.GET)
     public List<IntegralCaughtDTO> getIntegrals(@RequestParam(value = "userId")Long userId,
                                                 @RequestParam(value = "startTime")Long startTime,
@@ -57,4 +63,14 @@ public class IntegralController extends BaseController{
                                        HttpServletRequest request){
         return medalLogic.getMedal(medalId);
     }
+
+    @RequestMapping(value = UrlConstants.API_INTEGRAL,method = RequestMethod.PUT)
+    public Map<String, Integral> getIntegrals(){
+        return integralLogic.reloadIntegralMap();
+    }
+
+    @RequestMapping(value = "test",method = RequestMethod.GET)
+    public Map<String, Integral> getIntegralMap(){
+        return integralMap.getMap();
+    }
 }

+ 5 - 5
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java

@@ -35,9 +35,9 @@ public class UserController extends BaseController {
     }
 
 
-    @RequestMapping(value = UrlConstants.API + "userList", method = RequestMethod.GET)
-    public List<UserDTO> getUsers() {
-        List<Long> userIds = new ArrayList<>();
-        return userLogic.getUserList(userIds);
-    }
+//    @RequestMapping(value = UrlConstants.API + "userList", method = RequestMethod.GET)
+//    public List<UserDTO> getUsers() {
+//        List<Long> userIds = new ArrayList<>();
+//        return userLogic.getUserList(userIds);
+//    }
 }

+ 9 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/IntegralLogic.java

@@ -1,11 +1,14 @@
 package cn.iselab.mooctest.user.web.logic;
 
+import cn.iselab.mooctest.rpc.user.data.AddIntegralDTO;
 import cn.iselab.mooctest.rpc.user.data.IntegralCaughtDTO;
 import cn.iselab.mooctest.rpc.user.data.UserIntegralDTO;
+import cn.iselab.mooctest.user.model.Integral;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Author ROKG
@@ -20,4 +23,10 @@ public interface IntegralLogic {
     List<IntegralCaughtDTO> getIntegralCaughts(long userId, long startTime, long endTime);
 
     List<UserIntegralDTO> getUserIntegrals(String keyword);
+
+    UserIntegralDTO getUserIntegral(Long userId);
+
+    boolean addIntegral(AddIntegralDTO dto);
+
+    Map<String,Integral> reloadIntegralMap();
 }

+ 64 - 15
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/IntegralLogicImpl.java

@@ -1,7 +1,11 @@
 package cn.iselab.mooctest.user.web.logic.impl;
 
+import cn.iselab.mooctest.rpc.user.constants.IntegralEventConstants;
+import cn.iselab.mooctest.rpc.user.data.AddIntegralDTO;
 import cn.iselab.mooctest.rpc.user.data.IntegralCaughtDTO;
 import cn.iselab.mooctest.rpc.user.data.UserIntegralDTO;
+import cn.iselab.mooctest.user.configure.IntegralMap;
+import cn.iselab.mooctest.user.model.Integral;
 import cn.iselab.mooctest.user.model.User2Integral;
 import cn.iselab.mooctest.user.model.UserIntegral;
 import cn.iselab.mooctest.user.service.IntegralService;
@@ -10,13 +14,12 @@ import cn.iselab.mooctest.user.web.logic.IntegralLogic;
 import cn.iselab.mooctest.user.web.wrapper.IntegralCaughtWrapper;
 import cn.iselab.mooctest.user.web.wrapper.UserIntegralWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.sql.Timestamp;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -37,23 +40,15 @@ public class IntegralLogicImpl extends BaseLogic implements IntegralLogic {
     @Autowired
     UserIntegralWrapper userIntegralWrapper;
 
+    @Autowired
+    IntegralMap integralMap;
+
     @Override
     public IntegralCaughtDTO saveIntegralCaught(IntegralCaughtDTO dto){
         User2Integral integral= integralCaughtWrapper.unwrap(dto);
         integral.setCreateTime(new Timestamp(System.currentTimeMillis()));
         integral=integralService.saveUser2Integral(integral);
-
-        UserIntegral userIntegral=integralService.findByUserId(dto.getUserId());
-        if(userIntegral!=null) {
-            userIntegral.setTotal(userIntegral.getTotal() + integral.getPoints());
-        }else {
-            UserIntegral integral1=new UserIntegral();
-            integral1.setUserId(dto.getUserId());
-            integral1.setTotal(integral.getPoints());
-            integral1.setCreateTime(new Timestamp(System.currentTimeMillis()));
-            integral1.setEnabled(true);
-            integralService.saveIntegral(integral1);
-        }
+        addIntegral(integral);
         return integralCaughtWrapper.wrap(integral);
     }
 
@@ -72,4 +67,58 @@ public class IntegralLogicImpl extends BaseLogic implements IntegralLogic {
         return integrals.parallelStream()
                 .map(userIntegral -> userIntegralWrapper.wrap(userIntegral)).collect(Collectors.toList());
     }
+
+    @Override
+    public UserIntegralDTO getUserIntegral(Long userId){
+        UserIntegral userIntegral=integralService.findByUserId(userId);
+        return userIntegralWrapper.wrap(userIntegral);
+    }
+
+    @Override
+    public boolean addIntegral(AddIntegralDTO dto){
+        if (dto.getEvent()==null||dto.getUserId()==null){
+            return false;
+        }
+        Integral integral=integralMap.get(dto.getEvent());
+        if (integral==null){
+            return false;
+        }
+        if (integral.getSource().equals(IntegralEventConstants.LOGIN)){
+            User2Integral user2Integral=integralService.findIntegralBySource(dto.getEvent(),dto.getUserId());
+            if (user2Integral!=null){
+                return false;
+            }else {
+                user2Integral=new User2Integral();
+                user2Integral.setType(1);
+                user2Integral.setPoints(integral.getPoint());
+                user2Integral.setSource(integral.getSource());
+                user2Integral.setUserId(dto.getUserId());
+                user2Integral.setCreateTime(new Timestamp(System.currentTimeMillis()));
+
+                this.addIntegral(user2Integral);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public Map<String,Integral> reloadIntegralMap(){
+        return integralMap.reload();
+    }
+
+    public UserIntegral addIntegral(User2Integral integral){
+        UserIntegral userIntegral=integralService.findByUserId(integral.getUserId());
+        if(userIntegral!=null) {
+            userIntegral.setTotal(userIntegral.getTotal() + integral.getPoints());
+        }else {
+            userIntegral=new UserIntegral();
+            userIntegral.setUserId(integral.getUserId());
+            userIntegral.setTotal(integral.getPoints());
+            userIntegral.setCreateTime(new Timestamp(System.currentTimeMillis()));
+            userIntegral.setEnabled(true);
+        }
+        integralService.saveUser2Integral(integral);
+        integralService.updateIntegral(userIntegral);
+        return userIntegral;
+    }
 }

+ 2 - 2
mooctest-user-server/src/test/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImplTest.java

@@ -1,7 +1,7 @@
 package cn.iselab.mooctest.user.service.impl;
 
 import cn.iselab.mooctest.user.mapper.User2IntegralDao;
-import cn.iselab.mooctest.user.mapper.UserIntegralDao;
+import cn.iselab.mooctest.user.mapper.UserIntegralMapper;
 import cn.iselab.mooctest.user.service.IntegralService;
 import org.junit.Before;
 import org.junit.Test;
@@ -23,7 +23,7 @@ public class IntegralServiceImplTest {
     User2IntegralDao user2IntegralDao;
 
     @Mock
-    UserIntegralDao userIntegralDao;
+    UserIntegralMapper userIntegralMapper;
 
     @Before
     public void setUp() throws Exception {