package com.qxgmat.service.inline; import com.github.pagehelper.Page; import com.nuliji.tools.AbstractService; import com.nuliji.tools.exception.ParameterException; import com.nuliji.tools.exception.SystemException; import com.nuliji.tools.mybatis.Example; import com.qxgmat.data.dao.UserClassMapper; import com.qxgmat.data.dao.UserServiceMapper; import com.qxgmat.data.dao.entity.Pay; import com.qxgmat.data.dao.entity.UserClass; import com.qxgmat.data.dao.entity.UserPay; import com.qxgmat.data.dao.entity.UserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; @Service public class UserClassService extends AbstractService { private static final Logger logger = LoggerFactory.getLogger(UserClassService.class); @Resource private UserClassMapper userClassMapper; @Resource private UserPayService userPayService; // 开通服务 public boolean used(UserPay pay){ // todo 分析时长 add(UserClass.builder().userId(pay.getUserId()).category(Integer.valueOf(pay.getModuleExtend())).build()); return true; } /** * 合并用户信息,将old转移至new * @param oldUserId * @param newUserId */ public void mergeUser(Number oldUserId, Integer newUserId){ Example example = new Example(UserClass.class); example.and( example.createCriteria().andEqualTo("userId", oldUserId) ); update(userClassMapper, example, UserClass.builder().userId(newUserId).build()); } /** * 获取用户课程列表 * @param userId * @return */ public List<UserClass> getByUser(Number userId){ Example example = new Example(UserService.class); example.and( example.createCriteria() .andEqualTo("userId", userId) .andGreaterThanOrEqualTo("startTime", new Date()) .andLessThan("expireTime", new Date()) ); return select(userClassMapper, example); } public Map<Object, Collection<UserClass>> mapByUser(Collection userIds){ Map<Object, Collection<UserClass>> relationMap = new HashMap<>(); if(userIds.size() == 0) return relationMap; Example example = new Example(UserService.class); example.and( example.createCriteria() .andIn("userId", userIds) .andGreaterThanOrEqualTo("startTime", new Date()) .andLessThan("expireTime", new Date()) ); List<UserClass> userClassList = select(userClassMapper, example); if(userClassList.size() == 0) return relationMap; for(UserClass row: userClassList){ List<UserClass> l; Number userId = row.getUserId(); if(!relationMap.containsKey(userId)){ l = new ArrayList<>(); relationMap.put(userId, l); }else{ l = (List<UserClass>)relationMap.get(userId); } l.add(row); } return relationMap; } public UserClass add(UserClass cls){ int result = insert(userClassMapper, cls); cls = one(userClassMapper, cls.getId()); if(cls == null){ throw new SystemException("课程记录添加失败"); } return cls; } public UserClass edit(UserClass cls){ UserClass in = one(userClassMapper, cls.getId()); if(in == null){ throw new ParameterException("课程记录不存在"); } int result = update(userClassMapper, cls); return cls; } public boolean delete(Number id){ UserClass in = one(userClassMapper, id); if(in == null){ throw new ParameterException("课程记录不存在"); } int result = delete(userClassMapper, id); return result > 0; } public UserClass get(Number id){ UserClass in = one(userClassMapper, id); if(in == null){ throw new ParameterException("课程记录不存在"); } return in; } public Page<UserClass> select(int page, int pageSize){ return select(userClassMapper, page, pageSize); } public List<UserClass> select(Collection ids){ return select(userClassMapper, ids); } }