| 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<SysSmsSendRecord> 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<String> ids = StringUtils.strToColl(sysSmsTemplate.getSsrObject(), ","); | 
|                 List<String> 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<String> 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<String> 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<SysSmsSendRecord> dataList = sysSmsSendRecordDao.selectInPage(sysSmsSendRecord, pageVo); | 
|         AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, | 
|                 sysSmsSendRecordDao.selectTotalRecord(sysSmsSendRecord)); | 
|         return result; | 
|     } | 
|   | 
| } |