package com.matrix.system.hiveErp.action; import com.matrix.core.anotations.RemoveRequestToken; import com.matrix.core.anotations.SaveRequestToken; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.constance.SystemMessageCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.*; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.hive.bean.SysSmsSendRecord; import com.matrix.system.hive.bean.SysSmsShop; import com.matrix.system.hive.bean.SysSmsTemplate; import com.matrix.system.hive.dao.SysSmsSendRecordDao; import com.matrix.system.hive.dao.SysSmsShopDao; import com.matrix.system.hive.dao.SysSmsTemplateDao; import com.matrix.system.hive.dao.SysVipInfoDao; import com.matrix.system.hive.plugin.util.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author wzy * @description 短信模板表 * @date 2020-03-15 18:42 */ @Controller @RequestMapping(value = "admin/smsSendRecord") public class SysSmsSendRecordAction { @Autowired private SysSmsSendRecordDao sysSmsSendRecordDao; @Autowired private SysVipInfoDao vipInfoDao; @Autowired private SysSmsTemplateDao sysSmsTemplateDao; @Autowired private SysSmsShopDao sysSmsShopDao; @Autowired private SmsUtils smsUtils; //记录编辑前的值Before_Edit_Value public static final String BEV = "SysSmsTemplate_BEV"; /** * 列表显示 */ @RequestMapping(value = "/showList") public @ResponseBody AjaxResult showList(SysSmsSendRecord sysSmsSendRecord, PaginationVO pageVo) { if (pageVo == null) { pageVo = new PaginationVO(); } SysUsers loginUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); sysSmsSendRecord.setCompanyId(loginUser.getCompanyId()); List dataList = sysSmsSendRecordDao.selectInPage(sysSmsSendRecord, pageVo); AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, sysSmsSendRecordDao.selectTotalRecord(sysSmsSendRecord)); return result; } /** * 新增 */ @RemoveRequestToken @RequestMapping(value = "/add") public @ResponseBody AjaxResult addSysSmsTemplate(SysSmsSendRecord sysSmsTemplate) { return sendSms(sysSmsTemplate); } private AjaxResult sendSms(SysSmsSendRecord sysSmsTemplate) { SysUsers loginUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); SysSmsTemplate smsTemplate = sysSmsTemplateDao.selectById(sysSmsTemplate.getStId()); sysSmsTemplate.setCompanyId(loginUser.getCompanyId()); if (SysSmsSendRecord.IS_ALL_N.equals(sysSmsTemplate.getSsrIsAll())) { if (StringUtils.isNotBlank(sysSmsTemplate.getSsrObject())) { List ids = StringUtils.strToColl(sysSmsTemplate.getSsrObject(), ","); List phones = vipInfoDao.selectVipTelphoneByIds(ids); sysSmsTemplate.setSsrCnt(phones.size()); String result = smsUtils.sendBatchSms(StringUtils.collToStr(phones, ","), smsTemplate.getStCode()); sysSmsSendRecordDao.insert(sysSmsTemplate); // 店铺发送短信则分配数量-1 reduceShopSmsCnt(sysSmsTemplate); if ("OK".equals(result)) { return AjaxResult.buildSuccessInstance("发送成功"); } } } else { List phones = new ArrayList<>(); if (sysSmsTemplate.getShopId() != null) { phones.addAll(vipInfoDao.selectVipPhoneWithShop(sysSmsTemplate.getShopId())); } else { phones.addAll(vipInfoDao.selectAllVipPhone(loginUser.getCompanyId())); } if (CollectionUtils.isNotEmpty(phones)) { sysSmsTemplate.setSsrCnt(phones.size()); if (phones.size() > 1000) { int cnt = phones.size() % 1000; LogUtil.info("#列表模取值:{}, {}", cnt, phones.size()); int fromIndex = 0; int endIndex = 0; for (int i = 0; i < cnt; i++) { fromIndex += endIndex; endIndex += 1000; if (endIndex > phones.size()) { endIndex = phones.size(); } List toPhones = phones.subList(fromIndex, endIndex); LogUtil.info("----->{}", toPhones.size()); smsUtils.sendBatchSms(StringUtils.collToStr(toPhones, ","), smsTemplate.getStCode()); } sysSmsSendRecordDao.insert(sysSmsTemplate); // 店铺发送短信则分配数量-1 reduceShopSmsCnt(sysSmsTemplate); } else { String result = smsUtils.sendBatchSms(StringUtils.collToStr(phones, ","), smsTemplate.getStCode()); sysSmsSendRecordDao.insert(sysSmsTemplate); // 店铺发送短信则分配数量-1 reduceShopSmsCnt(sysSmsTemplate); if ("OK".equals(result)) { return AjaxResult.buildSuccessInstance("发送成功"); } } } } return AjaxResult.buildFailInstance("发送失败"); } private void reduceShopSmsCnt(SysSmsSendRecord sysSmsSendRecord) { if (sysSmsSendRecord.getShopId() != null) { SysSmsShop hasExist = sysSmsShopDao.selectByShopId(sysSmsSendRecord.getShopId()); hasExist.setRemainingCnt(hasExist.getRemainingCnt() - 1); sysSmsShopDao.updateByModel(hasExist); } } /** * 修改 */ @RemoveRequestToken @RequestMapping(value = "/modify") public @ResponseBody AjaxResult modifySysSmsTemplate(SysSmsTemplate newSysSmsTemplate) { return null; } /** * 进入修改界面 */ @SaveRequestToken @RequestMapping(value = "/editForm") public ModelAndView editForm(Long id) { SysSmsSendRecord sysSmsSendRecord = new SysSmsSendRecord(); ModelAndView modelAndView = new ModelAndView("admin/hive-erp/sms/sysSmsSendRecord-form"); if (id != null) { sysSmsSendRecord = sysSmsSendRecordDao.selectById(id); WebUtil.setSessionAttribute(BEV, sysSmsSendRecord); } modelAndView.addObject("obj", sysSmsSendRecord); return modelAndView; } /** * 删除 */ @RequestMapping(value = "/del") public @ResponseBody AjaxResult del(String keys) { return null; } @RequestMapping(value = "/addWithShop") @ResponseBody public AjaxResult addWithShop(SysSmsSendRecord sysSmsSendRecord) { SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); sysSmsSendRecord.setShopId(users.getShopId()); SysSmsShop hasExist = sysSmsShopDao.selectByShopId(sysSmsSendRecord.getShopId()); if (hasExist == null || hasExist.getRemainingCnt() <= 0) { return new AjaxResult(AjaxResult.STATUS_FAIL, "没有短信剩余"); } return sendSms(sysSmsSendRecord); } @SaveRequestToken @RequestMapping(value = "/editFormWithShop") public ModelAndView editFormWithShop(Long id) { SysSmsSendRecord sysSmsSendRecord = new SysSmsSendRecord(); ModelAndView modelAndView = new ModelAndView("admin/hive/sms/sysSmsSendRecord-form"); if (id != null) { sysSmsSendRecord = sysSmsSendRecordDao.selectById(id); WebUtil.setSessionAttribute(BEV, sysSmsSendRecord); } modelAndView.addObject("obj", sysSmsSendRecord); return modelAndView; } @RequestMapping(value = "/showListWithShop") public @ResponseBody AjaxResult showListWithShop(SysSmsSendRecord sysSmsSendRecord, PaginationVO pageVo) { if (pageVo == null) { pageVo = new PaginationVO(); } SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); sysSmsSendRecord.setShopId(users.getShopId()); List dataList = sysSmsSendRecordDao.selectInPage(sysSmsSendRecord, pageVo); AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, sysSmsSendRecordDao.selectTotalRecord(sysSmsSendRecord)); return result; } }