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; 
 | 
    } 
 | 
  
 | 
} 
 |