package cn.wisenergy.service.common; import cn.wisenergy.mapper.*; import cn.wisenergy.model.app.*; import cn.wisenergy.model.enums.CardStatus; import cn.wisenergy.model.enums.PayType; import cn.wisenergy.model.vo.AddLimitVo; import cn.wisenergy.service.app.UserVolunteerService; import cn.wisenergy.service.app.VolunteerService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @author 86187 * @ Description: 事务方法公共类 * @ Author : 86187 * @ Date : 2021/1/28 15:59 */ @Component @Slf4j public class VolunteerManager { @Autowired private UserLimitMapper userLimitMapper; @Autowired private UserLimitRecordMapper userLimitRecordMapper; @Autowired private CardMapper cardMapper; @Autowired private PayRecordMapper payRecordMapper; @Autowired private SchemeRecordMapper schemeRecordMapper; @Autowired private UserVolunteerService userVolunteerService; @Autowired private UsersMapper usersMapper; @Autowired private ScoreInfoMapper scoreInfoMapper; @Autowired private SchemeMapper schemeMapper; @Autowired private VolunteerService volunteerService; /** * 更新用户查询信息并保存扣减记录 * * @param userLimit 查询信息 * @return true or false */ @Transactional(rollbackFor = Exception.class) public boolean updateLimitSaveRecord(UserLimit userLimit) { //1、更新查询信息 int count = userLimitMapper.edit(userLimit); if (count == 0) { return false; } //2、保存扣减记录 UserLimitRecord userLimitRecord = new UserLimitRecord(); userLimitRecord.setMinusLimit(1); userLimitRecord.setUserLimitId(userLimit.getId()); userLimitRecord.setUserId(userLimit.getUserId()); int record = userLimitRecordMapper.add(userLimitRecord); if (record == 0) { return false; } return true; } /** * 更新充值卡状态和用户查询次数及增加充值记录 * * @param cardInfo 充值卡信息 * @param userLimit 用户查询次数信息 * @param addLimitVo 接口入参 */ @Transactional(rollbackFor = Exception.class) public Boolean updateLimitAndRecord(Price price, CardInfo cardInfo, UserLimit userLimit, AddLimitVo addLimitVo) { //是充值卡 if (PayType.REFILL_CARD.getCode().equals(addLimitVo.getPayType())) { //1、更新充值卡状态 cardInfo.setStatus(CardStatus.ALREADY_USED.getCode()); int count = cardMapper.updateById(cardInfo); if (count == 0) { return false; } //2、更新用户查询次数信息 int limit = userLimitMapper.edit(userLimit); if (limit == 0) { return false; } //3、保存充值记录 PayRecord payRecord = new PayRecord(); payRecord.setCardId(cardInfo.getId()); payRecord.setMoney(Integer.valueOf(cardInfo.getMoney())); payRecord.setPayLimit(cardInfo.getLimit()); payRecord.setResult(0); payRecord.setType(addLimitVo.getPayType()); payRecord.setUserId(addLimitVo.getUserId()); int pay = payRecordMapper.add(payRecord); if (pay == 0) { return false; } } else { //1、更新用户查询次数信息 int limit = userLimitMapper.edit(userLimit); if (limit == 0) { return false; } //2、保存充值记录 PayRecord payRecord = new PayRecord(); payRecord.setCardId(null); payRecord.setMoney(addLimitVo.getPayMoney()); payRecord.setPayLimit(price.getUseLimit()); payRecord.setResult(0); payRecord.setType(addLimitVo.getPayType()); payRecord.setUserId(addLimitVo.getUserId()); int pay = payRecordMapper.add(payRecord); if (pay == 0) { return false; } } return true; } /** * 保存方案查询记录和关联关系 * * @param user 用户信息 * @param list 志愿信息 * @return true 成功 false 失败 */ @Transactional(rollbackFor = Exception.class) public boolean saveUserVolunteer(User user, List<Volunteer> list, ScoreInfo scoreInfo, String name) { //1、保存方案查询记录 SchemeQueryRecord schemeQueryRecord = new SchemeQueryRecord(); schemeQueryRecord.setMajorName(name); schemeQueryRecord.setStudentType(user.getExamType()); schemeQueryRecord.setUserId(user.getId()); schemeQueryRecord.setIsDelete(0); double score = scoreInfo.getCultureGrade() + scoreInfo.getMajorGrade(); schemeQueryRecord.setScore(String.valueOf(score)); List<Integer> ids = list.stream().map(Volunteer::getId).collect(Collectors.toList()); //保存方案查询记录 int count = schemeRecordMapper.add(schemeQueryRecord); if (count == 0) { return false; } List<UserVolunteer> volunteerList = new ArrayList<>(); for (Integer id : ids) { UserVolunteer userVolunteer = new UserVolunteer(); userVolunteer.setSchemeRecordId(schemeQueryRecord.getId()); userVolunteer.setUserId(user.getId()); userVolunteer.setVolunteerId(id); volunteerList.add(userVolunteer); } boolean bool = userVolunteerService.saveBatch(volunteerList); if (!bool) { return false; } return true; } /** * 保存个人信息 * * @param user 用户信息 * @param scoreInfo 成绩信息 * @return true or false */ @Transactional(rollbackFor = Exception.class) public boolean updateAndSaveUserInfo(User user, ScoreInfo scoreInfo) { //1、更新用户信息 int count = usersMapper.edit(user); if (count == 0) { return false; } //2、保存用户成绩信息 int save = scoreInfoMapper.add(scoreInfo); if (save == 0) { return false; } return true; } /** * 编辑个人信息 * * @param user 用户信息 * @param scoreInfo 成绩信息 * @return true or false */ @Transactional() public boolean updateAndUserInfo(User user, ScoreInfo scoreInfo) { //1、更新用户信息 int count = usersMapper.edit(user); if (count == 0) { return false; } //2、保存用户成绩信息 int save = scoreInfoMapper.edit(scoreInfo); if (save == 0) { return false; } return true; } /** * 保存方案和志愿信息 * * @param schemeInfo 方案信息 * @param list 志愿信息 */ @Transactional(rollbackFor = Exception.class) public void saveSchemeAndVolunteer(SchemeInfo schemeInfo, List<Volunteer> list) { //1、保存方案信息 int count = schemeMapper.add(schemeInfo); if (count == 0) { throw new RuntimeException("保存方案信息失败!"); } //保存志愿信息 for (Volunteer volunteer : list) { volunteer.setSchemeId(schemeInfo.getId()); volunteer.setType(schemeInfo.getType()); } boolean bool = volunteerService.saveBatch(list); if (!bool) { throw new RuntimeException("保存志愿信息失败!"); } } }