package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.CommonResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Strings; import com.doumee.core.utils.Utils; import com.doumee.core.utils.aliyun.ALiYunSmSUtil; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.ShopScanMapper; import com.doumee.dao.business.SmsrecordMapper; import com.doumee.dao.business.model.Smsrecord; import com.doumee.service.business.SmsrecordService; import org.apache.commons.lang3.SystemUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; /** * 短信验证码记录表Service实现 * @author 江蹄蹄 * @date 2023/03/22 08:56 */ @Service public class SmsrecordServiceImpl implements SmsrecordService { @Autowired private SmsrecordMapper smsrecordMapper; @Autowired private MemberMapper memberMapper; @Override public Integer create(Smsrecord smsrecord) { smsrecordMapper.insert(smsrecord); return smsrecord.getId(); } @Override public void deleteById(Integer id) { smsrecordMapper.deleteById(id); } @Override public void delete(Smsrecord smsrecord) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(smsrecord); smsrecordMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } smsrecordMapper.deleteBatchIds(ids); } @Override public void updateById(Smsrecord smsrecord) { smsrecordMapper.updateById(smsrecord); } @Override public void updateByIdInBatch(List smsrecords) { if (CollectionUtils.isEmpty(smsrecords)) { return; } for (Smsrecord smsrecord: smsrecords) { this.updateById(smsrecord); } } @Override public Smsrecord findById(Integer id) { return smsrecordMapper.selectById(id); } @Override public Smsrecord findOne(Smsrecord smsrecord) { QueryWrapper wrapper = new QueryWrapper<>(smsrecord); return smsrecordMapper.selectOne(wrapper); } @Override public List findList(Smsrecord smsrecord) { QueryWrapper wrapper = new QueryWrapper<>(smsrecord); return smsrecordMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Smsrecord::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Smsrecord::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Smsrecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Smsrecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(Smsrecord::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Smsrecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Smsrecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(Smsrecord::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Smsrecord::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getMemberId() != null) { queryWrapper.lambda().eq(Smsrecord::getMemberId, pageWrap.getModel().getMemberId()); } if (pageWrap.getModel().getPhone() != null) { queryWrapper.lambda().eq(Smsrecord::getPhone, pageWrap.getModel().getPhone()); } if (pageWrap.getModel().getContent() != null) { queryWrapper.lambda().eq(Smsrecord::getContent, pageWrap.getModel().getContent()); } if (pageWrap.getModel().getType() != null) { queryWrapper.lambda().eq(Smsrecord::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getValidDate() != null) { queryWrapper.lambda().eq(Smsrecord::getValidDate, pageWrap.getModel().getValidDate()); } if (pageWrap.getModel().getCode() != null) { queryWrapper.lambda().eq(Smsrecord::getCode, pageWrap.getModel().getCode()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Smsrecord::getStatus, pageWrap.getModel().getStatus()); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(smsrecordMapper.selectPage(page, queryWrapper)); } @Override public long count(Smsrecord smsrecord) { QueryWrapper wrapper = new QueryWrapper<>(smsrecord); return smsrecordMapper.selectCount(wrapper); } /****************************************移动端接口开始********************************************************************/ /** * 发送短信 目前只有短信验证码 * @param memberId * @param phone */ @Override public void sendSms(Integer memberId,String phone){ smsrecordMapper.update(null, new UpdateWrapper() .set("STATUS",2) .eq("PHONE",phone) .eq("STATUS",0) ); String digits = Strings.randomNumeric(4); //发送验证码 Map map = new HashMap(); map.put("code",digits); CommonResponse response = ALiYunSmSUtil.sendMessage(phone,map); if(response.getHttpResponse().isSuccess()){ JSONObject data = JSONObject.parseObject(response.getData()); String returnCode = data.getString("Code"); if(!returnCode.equals("OK")){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"短信发送失败:" + data.getString("Message")); } } //存储短信验证码 Smsrecord smsrecord = new Smsrecord(); smsrecord.setCreateDate(new Date()); smsrecord.setMemberId(memberId); smsrecord.setPhone(phone); smsrecord.setContent("验证码短信"); smsrecord.setType(Constants.ZERO); smsrecord.setValidDate(DateUtil.afterMinutesDate(3)); smsrecord.setCode(digits); smsrecord.setStatus(Constants.ZERO); smsrecord.setIsdeleted(Constants.ZERO); smsrecordMapper.insert(smsrecord); } /** * 验证码验证 * @param memberId * @param phone * @param code */ @Override public void verifyCode(Integer memberId,String phone,String code){ Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper() .eq("MEMBER_ID",memberId) .eq("PHONE",phone) .eq("CODE",code) .eq("TYPE",Constants.ZERO) .eq("STATUS",Constants.ZERO) .last(" limit 1 ") ); if(Objects.isNull(smsrecord)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码输入错误或已过期!"); } if(smsrecord.getValidDate().getTime()