123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- 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.UserSentenceProgressMapper;
- import com.qxgmat.data.dao.entity.UserSentenceProgress;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.Collection;
- import java.util.List;
- @Service
- public class UserSentenceProgressService extends AbstractService {
- private static final Logger logger = LoggerFactory.getLogger(UserSentenceProgressService.class);
- @Resource
- private UserSentenceProgressMapper userSentenceProgressMapper;
- /**
- * 更新长难句文章进度
- * @param userId
- * @param chapter
- * @param part
- * @param progress
- * @return
- */
- @Transactional
- public UserSentenceProgress updateProgress(Integer userId, Integer chapter, Integer part, Integer progress){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("chapter", chapter)
- .andEqualTo("part", part)
- );
- UserSentenceProgress entity;
- UserSentenceProgress in = one(userSentenceProgressMapper, example);
- if (in != null){
- if (in.getProgress() <= progress) {
- in.setProgress(progress);
- entity = edit(in);
- }else if(in.getProgress() == 100){
- in.setProgress(progress);
- in.setTimes(in.getTimes() + 1);
- entity = edit(in);
- return entity;
- }else{
- entity = in;
- // 不用更新进度
- return entity;
- }
- }else{
- entity = add(UserSentenceProgress.builder()
- .userId(userId)
- .chapter(chapter)
- .part(part)
- .times(0)
- .progress(progress).build());
- }
- // 计算本章节的总体进度
- // List<UserSentenceProgress> list = listByChapter(userId, chapter);
- // Integer total = 0;
- // for (UserSentenceProgress p: list) {
- // total += p.getProgress();
- // }
- // updateTotalProgress(userId, chapter, (total * 100) / (maxPart * 100));
- return entity;
- }
- /**
- * 更新单个章节总体进度
- * @param userId
- * @param chapter
- * @param progress
- */
- private void updateTotalProgress(Integer userId, Integer chapter, Integer progress){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("chapter", chapter)
- .andEqualTo("part", 0)
- );
- UserSentenceProgress in = one(userSentenceProgressMapper, example);
- if (in != null){
- if (in.getProgress() <= progress){
- in.setProgress(progress);
- edit(in);
- }else if(in.getProgress() == 100){
- in.setProgress(progress);
- in.setTimes(in.getTimes() + 1);
- edit(in);
- }
- }else{
- add(UserSentenceProgress.builder()
- .userId(userId)
- .chapter(chapter)
- .part(0)
- .times(0)
- .progress(progress).build());
- }
- }
- /**
- * 获取用户所有章节的所有进度
- * @param userId
- * @return
- */
- public List<UserSentenceProgress> all(Integer userId){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andNotEqualTo("part", 0)
- );
- return select(userSentenceProgressMapper, example);
- }
- /**
- * 获取用户单个章节的所有进度
- * @param userId
- * @param chapter
- * @return
- */
- public List<UserSentenceProgress> listByChapter(Integer userId, Integer chapter){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("chapter", chapter)
- .andNotEqualTo("part", 0)
- );
- return select(userSentenceProgressMapper, example);
- }
- /**
- * 获取用户所有章节进度:试用情况下
- * @param userId
- * @return
- */
- public List<UserSentenceProgress> listAllByTrail(Integer userId){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andNotEqualTo("part", 0)
- );
- return select(userSentenceProgressMapper, example);
- }
- /**
- * 获取用户所有章节总体进度
- * @param userId
- * @return
- */
- public List<UserSentenceProgress> listTotal(Integer userId){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("part", 0)
- );
- return select(userSentenceProgressMapper, example);
- }
- /**
- * 获取单篇文章进度
- * @param userId
- * @param chapter
- * @param part
- * @return
- */
- public UserSentenceProgress get(Integer userId, Integer chapter, Integer part){
- Example example = new Example(UserSentenceProgress.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("chapter", chapter)
- .andEqualTo("part", part)
- );
- return one(userSentenceProgressMapper, example);
- }
- public UserSentenceProgress add(UserSentenceProgress process){
- int result = insert(userSentenceProgressMapper, process);
- process = one(userSentenceProgressMapper, process.getId());
- if(process == null){
- throw new SystemException("进度添加失败");
- }
- return process;
- }
- public UserSentenceProgress edit(UserSentenceProgress process){
- UserSentenceProgress in = one(userSentenceProgressMapper, process.getId());
- if(in == null){
- throw new ParameterException("进度不存在");
- }
- int result = update(userSentenceProgressMapper, process);
- return process;
- }
- public boolean delete(Number id){
- UserSentenceProgress in = one(userSentenceProgressMapper, id);
- if(in == null){
- throw new ParameterException("进度不存在");
- }
- int result = delete(userSentenceProgressMapper, id);
- return result > 0;
- }
- public UserSentenceProgress get(Number id){
- UserSentenceProgress in = one(userSentenceProgressMapper, id);
- if(in == null){
- throw new ParameterException("进度不存在");
- }
- return in;
- }
- public Page<UserSentenceProgress> select(int page, int pageSize){
- return select(userSentenceProgressMapper, page, pageSize);
- }
- public Page<UserSentenceProgress> select(Integer[] ids){
- return page(()->select(userSentenceProgressMapper, ids), 1, ids.length);
- }
- public List<UserSentenceProgress> select(Collection ids){
- return select(userSentenceProgressMapper, ids);
- }
- }
|