|
|
package com.yoho.ufo.order.service.scheduled;
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.yoho.order.model.StorageDeposit;
|
|
|
import com.yoho.quartz.annotation.JobType;
|
|
|
import com.yoho.quartz.annotation.MisfiredPolicy;
|
|
|
import com.yoho.quartz.annotation.YhJobDef;
|
|
|
import com.yoho.quartz.domain.JobProcessResult;
|
|
|
import com.yoho.quartz.domain.JobResultCode;
|
|
|
import com.yoho.quartz.job.YhJob;
|
|
|
import com.yoho.ufo.order.service.IStorageDepositService;
|
|
|
import com.yoho.ufo.service.impl.InboxServiceImpl;
|
|
|
import com.yoho.ufo.service.impl.UfoServiceCaller;
|
|
|
import com.yoho.ufo.service.impl.UserProxyService;
|
|
|
import com.yohobuy.ufo.model.enums.InboxBusinessTypeEnum;
|
|
|
import com.yohobuy.ufo.model.message.SmsMessageReq;
|
|
|
import com.yohobuy.ufo.model.resp.product.ProductResponceBo;
|
|
|
import com.yohobuy.ufo.model.resp.product.SecondDetailResp;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.slf4j.helpers.MessageFormatter;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* Created by li.ma on 2019/7/8.
|
|
|
* 扫描库存到期前24小时的到期提醒
|
|
|
*/
|
|
|
@Service(value="storageDepositRemind")
|
|
|
@YhJobDef(desc = "库存寄存到期处理", jobName = "storageDepositRemind", cron = "0 0/10 * * * ?", misfiredPolicy = MisfiredPolicy.CRON_DO_NOTHING,
|
|
|
jobType = JobType.CRON, jobGroup = "ufoPlatform")
|
|
|
public class StorageDepositRemind implements YhJob {
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger("scheduledLog");
|
|
|
|
|
|
@Autowired
|
|
|
private IStorageDepositService storageDepositService;
|
|
|
|
|
|
@Autowired
|
|
|
private InboxServiceImpl inboxService;
|
|
|
|
|
|
@Autowired
|
|
|
private UserProxyService userProxyService;
|
|
|
|
|
|
@Autowired
|
|
|
private UfoServiceCaller ufoServiceCaller;
|
|
|
|
|
|
public JobProcessResult process(String jobContext) {
|
|
|
LOGGER.info("StorageDepositRemind begin.");
|
|
|
JobProcessResult result = new JobProcessResult();
|
|
|
List<StorageDeposit> storageDeposits = storageDepositService.selectNeddRemindDeposit(); // 查询待通知续约的库存
|
|
|
|
|
|
storageDeposits.stream().forEach(item -> {
|
|
|
|
|
|
ProductResponceBo productResponceBo = ufoServiceCaller.call("ufo.product.storageDetial", ProductResponceBo.class, item.getStorageId());
|
|
|
LOGGER.info("StorageDepositRemind run. item is {}, productResponceBo is {}", item, productResponceBo);
|
|
|
|
|
|
inboxService.addInboxForPlatformEx(item.getOwnerUid(), InboxBusinessTypeEnum.NOTICE_SELLER_DEPOSIT_REMIND.getType(),
|
|
|
InboxBusinessTypeEnum.NOTICE_SELLER_DEPOSIT_REMIND.getBusinessType(),
|
|
|
productResponceBo.getProductName(), productResponceBo.getSizeName(), productResponceBo.getProductCode());
|
|
|
|
|
|
SmsMessageReq smsReq = new SmsMessageReq(); //发送短信
|
|
|
String mobile = userProxyService.getMobile(item.getOwnerUid()); //获取手机号
|
|
|
smsReq.setMobileList(Lists.newArrayList(mobile));
|
|
|
smsReq.setContent(getReplacedContent(InboxBusinessTypeEnum.SMS_NOTIFY_SELLER_DEPOSIT_REMIND.getContent(), productResponceBo.getProductName(),
|
|
|
productResponceBo.getSizeName(), productResponceBo.getProductCode()));
|
|
|
inboxService.sendSmsMessage(new SmsMessageReq());
|
|
|
|
|
|
storageDepositService.updateHasRemind(item.getId()); // 置库存记录为已通知状态
|
|
|
});
|
|
|
|
|
|
result.setJobResultCode(JobResultCode.SUCCESS);
|
|
|
LOGGER.info("StorageDepositRemind end.");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
private String getReplacedContent(String content ,Object... params) {
|
|
|
return MessageFormatter.arrayFormat(content, params).getMessage();
|
|
|
}
|
|
|
} |
...
|
...
|
|