package com.yeshi.fanli.service.impl.activity; import java.io.InputStream; import java.util.Date; import java.util.List; import java.util.UUID; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.yeshi.utils.tencentcloud.COSManager; import com.yeshi.fanli.dao.mybatis.activity.ActivityRuleUserMapper; import com.yeshi.fanli.dao.mybatis.activity.ActivityUserMapper; import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser; import com.yeshi.fanli.entity.bus.activity.ActivityUser; import com.yeshi.fanli.exception.dynamic.ActivityUserException; import com.yeshi.fanli.service.inter.activity.ActivityUserService; import com.yeshi.fanli.util.FilePathEnum; import com.yeshi.fanli.util.StringUtil; @Service public class ActivityUserServiceImpl implements ActivityUserService { @Resource private ActivityUserMapper activityUserMapper; @Resource private ActivityRuleUserMapper activityRuleUserMapper; @Override public ActivityUser selectByPrimaryKey(Long id) { return activityUserMapper.selectByPrimaryKey(id); } @Override public List listRand(int count) { return activityUserMapper.listRand(count); } @Override public void addActivityRuleUser(ActivityRuleUser ruleUser) { if (ruleUser == null || ruleUser.getActivityUser() == null) return; // 添加用户 ActivityUser user = activityUserMapper.selectByName(ruleUser.getActivityUser().getNickName()); if (user == null) { user = ruleUser.getActivityUser(); user.setCreateTime(new Date()); activityUserMapper.insertSelective(user); } ActivityRuleUser oldRuleUser = activityRuleUserMapper.selectByUserIdAndRuleCode(user.getId(), ruleUser.getRuleCode()); if (oldRuleUser == null) { ruleUser.setActivityUser(user); ruleUser.setCreateTime(new Date()); activityRuleUserMapper.insertSelective(ruleUser); } else { ActivityRuleUser update = new ActivityRuleUser(); update.setId(oldRuleUser.getId()); update.setOrderBy(ruleUser.getOrderBy()); activityRuleUserMapper.updateByPrimaryKeySelective(update); } } @Override public ActivityUser getActivityUserByNickName(ActivityUser record, MultipartFile file) throws ActivityUserException{ if (record == null || StringUtil.isNullOrEmpty(record.getNickName())) throw new ActivityUserException(1, "昵称不能为空"); try { ActivityUser userExist = activityUserMapper.selectByName(record.getNickName().trim()); if (userExist != null) { return userExist; } // 不存在则新增 if (file == null) { throw new ActivityUserException(1, "头像不能为空"); } String portrait = uploadPicture(file); record.setPortrait(portrait); record.setCreateTime(new Date()); activityUserMapper.insertSelective(record); return record; } catch (Exception e) { e.printStackTrace(); throw new ActivityUserException(1, "用户信息保存异常"); } } /** * 上传图片 * @param file * @return * @throws Exception */ public String uploadPicture(MultipartFile file) throws Exception { // 文件解析 InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); // 文件路径 String filePath= FilePathEnum.activityUser.getPath() +UUID.randomUUID().toString().replace("-", "") + "." + type; // 执行上传 String fileLink= COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); return fileLink; } @Override public List listByRuleCode(Integer ruleCode, int page, int pageSize) { return activityRuleUserMapper.listByRuleCode(ruleCode, (page - 1) * pageSize, pageSize); } @Override public ActivityUser selectByName(String nickName) { return activityUserMapper.selectByName(nickName); } @Override public long countByRuleCode(Integer ruleCode) { return activityRuleUserMapper.countByRuleCode(ruleCode); } @Override public void deleteByRuleUserId(Long id) { ActivityRuleUser user = activityRuleUserMapper.selectByPrimaryKey(id); if (user.getActivityUser() != null) activityUserMapper.deleteByPrimaryKey(user.getActivityUser().getId()); activityRuleUserMapper.deleteByPrimaryKey(id); } @Override public ActivityRuleUser selectRuleUserByPrimaryKey(Long id) { return activityRuleUserMapper.selectByPrimaryKey(id); } @Override public void updateActivityUser(ActivityUser au) { activityUserMapper.updateByPrimaryKeySelective(au); } @Override public void updateActivityRuleUser(ActivityRuleUser au) { activityRuleUserMapper.updateByPrimaryKeySelective(au); } @Override public ActivityUser getRandomByDaTaoKeCid(int cid) { int ruleId = 100 + cid; List ruleList = activityRuleUserMapper.listByRuleCode(ruleId, 0, 100); return ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser(); } @Override public ActivityUser getRandomHaoHuo() { List ruleList = activityRuleUserMapper.listByRuleCode(ActivityRuleUser.RULE_HAOHUO, 0, 100); return ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser(); } }