提交 f4ac407c authored 作者: hzh's avatar hzh

代码优化

上级 4d239ca0
......@@ -10,4 +10,9 @@ public interface RemoteWeishiService {
*/
void getToken();
/**
* 更新订单状态
*/
void updateOrderStatus();
}
......@@ -42,6 +42,10 @@ public class DetailResponse {
* 计划名称
*/
private String PlanName;
/**
* 保险公司
*/
private String InsurerAbbr;
/**
* 保单数量
*/
......@@ -58,6 +62,10 @@ public class DetailResponse {
* 实收保费
*/
private BigDecimal ActPremium;
/**
* 订单状态
*/
private String status;
/**
* 被保人列表
*/
......
package org.dromara.job.snailjob.mall.weishi;
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.client.model.ExecuteResult;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.mall.api.weishi.RemoteWeishiService;
import org.springframework.stereotype.Component;
/**
* 获取token
*
* @author wenhe
*/
@AllArgsConstructor
@Component
@JobExecutor(name = "WeishiOrderUpdateStatusJob")
public class WeishiOrderUpdateStatusJob {
@DubboReference
private RemoteWeishiService weishiService;
public ExecuteResult jobExecute(JobArgs jobArgs) {
weishiService.updateOrderStatus();
return ExecuteResult.success("跟新卫士token成功");
}
}
......@@ -79,6 +79,11 @@ public class InsureBo extends BaseEntity {
*/
private Date endDate;
/**
* 订单过期时间,格式为YYYY-MM-DD HH:MM:SS
*/
private Date overDate;
/**
* 旅行目的地
*/
......
......@@ -82,6 +82,11 @@ public class InsureVo implements Serializable {
*/
private Date endDate;
/**
* 订单过期时间,格式为YYYY-MM-DD HH:MM:SS
*/
private Date overDate;
/**
* 旅行目的地
*/
......
......@@ -93,6 +93,11 @@ public class Insure extends TenantEntity {
*/
private Date endDate;
/**
* 订单过期时间,格式为YYYY-MM-DD HH:MM:SS
*/
private Date overDate;
/**
* 旅行目的地
*/
......
......@@ -7,6 +7,7 @@ import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.weishi.model.res.AuthResponse;
import org.dromara.common.weishi.service.WeishiService;
import org.dromara.mall.api.weishi.RemoteWeishiService;
import org.dromara.mall.service.weishi.IInsureService;
import org.springframework.stereotype.Service;
import java.time.Duration;
......@@ -23,6 +24,7 @@ import static org.dromara.mall.enums.weishi.WeishiConstants.WEISHI_TOKEN;
public class RemoteWeishiServiceImpl implements RemoteWeishiService {
private final WeishiService weishiService;
private final IInsureService insureService;
@Override
public void getToken() {
......@@ -32,4 +34,9 @@ public class RemoteWeishiServiceImpl implements RemoteWeishiService {
RedisUtils.setCacheObject(WEISHI_TOKEN, res.getAccess_token(), Duration.ofSeconds(res.getExpires_in().longValue()));
}
}
@Override
public void updateOrderStatus() {
insureService.updateOrderStatus(null);
}
}
......@@ -51,4 +51,8 @@ public interface IInsureService extends IBaseService<InsureVo, InsureBo, Insure>
*/
void policyCancel(String policyNum);
/**
* 更新订单状态
*/
void updateOrderStatus(Integer orderId);
}
package org.dromara.mall.service.weishi.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
......@@ -13,10 +15,7 @@ import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.weishi.constant.OrderStatus;
import org.dromara.common.weishi.model.req.ApplyRequest;
import org.dromara.common.weishi.model.res.ApplyResponse;
import org.dromara.common.weishi.model.res.AuthResponse;
import org.dromara.common.weishi.model.res.ProductResponse;
import org.dromara.common.weishi.model.res.ProductsResponse;
import org.dromara.common.weishi.model.res.*;
import org.dromara.common.weishi.service.WeishiService;
import org.dromara.mall.controller.weishi.admin.bo.InsureBo;
import org.dromara.mall.controller.weishi.admin.vo.InsureVo;
......@@ -29,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.Duration;
import java.util.*;
import static cn.hutool.core.date.DatePattern.NORM_DATETIME_MINUTE_PATTERN;
import static org.dromara.mall.enums.weishi.WeishiConstants.WEISHI_TOKEN;
/**
......@@ -122,6 +122,7 @@ public class InsureServiceImpl extends AbstractBaseService<InsureVo, InsureBo, I
.setInsuredName(req.getUnits().get(0).getPolicyHolder().getName())
.setInsuredAbbr(productsRes.getInsurerAbbr())
.setPlanName(productsRes.getInsurerAbbr() + " - " + Optional.ofNullable(plan).map(ProductResponse.Plan::getPlanName).orElse(null))
.setOverDate(DateUtil.parse(weishiService.insureDetail(token, res.getOrderID()).getOverDate(), NORM_DATETIME_MINUTE_PATTERN))
.setOrderTime(new Date());
insure.setCreateDept(LoginHelper.getDeptId());
baseMapper.insert(insure);
......@@ -199,4 +200,34 @@ public class InsureServiceImpl extends AbstractBaseService<InsureVo, InsureBo, I
}
@Override
public void updateOrderStatus(Integer orderId) {
//获取订单列表
List<Insure> insureList = orderId != null ?
baseMapper.selectList(Insure::getOrderId, orderId) :
baseMapper.selectList(new LambdaQueryWrapper<Insure>()
.notIn(Insure::getStatus, List.of(OrderStatus.D.getKey(), OrderStatus.A.getKey())));
if (CollectionUtils.isNotEmpty(insureList)) {
List<String> orderNumList = StreamUtils.toList(insureList, Insure::getOrderNum);
//获取投保单位集合
List<InsureUnit> unitList = unitMapper.selectList(new LambdaQueryWrapper<InsureUnit>().in(InsureUnit::getOrderNum, orderNumList));
//获取被保人集合
List<InsureInsureds> insuredsList = insuredsMapper.selectList(new LambdaQueryWrapper<InsureInsureds>().in(InsureInsureds::getOrderNum, orderNumList));
insureList.forEach(i -> {
DetailResponse dr = weishiService.insureDetail(getToken(), i.getOrderId());
if (!StringUtils.equals(i.getStatus(), dr.getStatus())) {
i.setStatus(dr.getStatus());
baseMapper.updateById(i);
//跟新投保单位
List<InsureUnit> iuList = StreamUtils.filter(unitList, u -> StringUtils.equals(u.getOrderNum(), i.getOrderNum()));
iuList.forEach(iu -> iu.setStatus(dr.getStatus()));
unitMapper.updateBatch(iuList);
//跟新被保人信息
List<InsureInsureds> iiList = StreamUtils.filter(insuredsList, insureds -> StringUtils.equals(insureds.getOrderNum(), i.getOrderNum()));
iiList.forEach(ii -> ii.setStatus(dr.getStatus()));
insuredsMapper.updateBatch(iiList);
}
});
}
}
}
package org.dromara.mall.service.weishi.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.weishi.model.req.AuthRequest;
......@@ -12,6 +13,7 @@ import org.dromara.mall.service.weishi.IThirdWeishiService;
import org.springframework.stereotype.Service;
import java.time.Duration;
import java.util.List;
import java.util.Objects;
/**
......@@ -20,6 +22,7 @@ import java.util.Objects;
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class ThirdWeishiServiceImpl implements IThirdWeishiService {
private final WeishiService weishiService;
......@@ -35,6 +38,11 @@ public class ThirdWeishiServiceImpl implements IThirdWeishiService {
if (Objects.isNull(account)) {
throw new RuntimeException("该部门没有配置");
}
String token = updateToken(account);
return token;
}
private String updateToken(Account account) {
String key = StringUtils.format(WEISHI_TOKEN, account.getTenantId(), account.getDeptId());
String token = RedisUtils.getCacheObject(key);
if (StringUtils.isEmpty(token)) {
......@@ -47,6 +55,18 @@ public class ThirdWeishiServiceImpl implements IThirdWeishiService {
@Override
public void updateToken(Long deptId) {
List<Account> accountList;
if (Objects.nonNull(deptId)) {
accountList = accountMapper.selectList(Account::getDeptId, deptId);
} else {
accountList = accountMapper.selectList();
}
accountList.forEach(account -> {
try {
updateToken(account);
} catch (Exception e) {
log.info("旅游卫士token更新失败,部门id:{},账号:{},密码:{}", account.getDeptId(), account.getUsername(), account.getPassword());
}
});
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论