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