xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActicity.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,7 +25,7 @@ @Accessors(chain = true) @TableName("xp_acticity") @ApiModel(value="XpActicity对象", description="活动管理") public class XpActicity extends BaseModel { public class XpActicity { private static final long serialVersionUID = 1L; @@ -56,5 +55,13 @@ @ApiModelProperty(value = "邀请启用 1=是 0=否") private Boolean inviteEnable; @ApiModelProperty(value = "是否删除") private String deleted; @ApiModelProperty(value = "图片") private String img; @ApiModelProperty(value = "是否第一次 1=是 0=否") private Boolean isFirst; } xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/constant/CacheConstants.java
@@ -147,6 +147,11 @@ */ public static final String USER_ROUTE_PREFERENCE = "USER_ROUTE_PREFERENCE:"; public static final String ACTIVITY_FIRST_ENTER = "ACTIVITY:FIRST_ENTER:"; public static String firstEnterActivity(String key, String id) { return ACTIVITY_FIRST_ENTER + key + ":" + id; } /** * 重新派单 改派 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -104,8 +104,8 @@ @ApiOperation(value = "接收工单", tags = "运维APP-任务中心") @PostMapping("/maintenance-app/api/v1/task/accept") public R<?> accept(@RequestBody TaskVO taskVO) { xpTaskService.accept(taskVO); public R<?> accept(@RequestParam String taskId) { xpTaskService.accept(taskId); return R.ok(); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
@@ -100,5 +100,5 @@ void saveVehicleAccidentError(Long vehicleI); void accept(TaskVO taskVO); void accept(String taskId); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -1473,10 +1473,12 @@ @Override @Transactional public void accept(TaskVO taskVO) { public void accept(String taskId) { updateTaskStatus(taskVO.getId(), TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE, Long.valueOf(taskVO.getHandleUserId())); sendAccidentNotificationAsync(getById(taskVO.getId()), taskVO.getPlateNumber(), (int) Duration.between(LocalDateTime.now(),taskVO.getEndTime()).toMinutes()); XpTask task = getById(Long.valueOf(taskId)); XpVehicle vehicle = xpVehicleClient.queryById(task.getVehicleId()).getData(); updateTaskStatus(task.getId(), TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE, Long.valueOf(task.getHandleUserId())); sendAccidentNotificationAsync(getById(task.getId()), vehicle.getPlateNumber(), (int) Duration.between(LocalDateTime.now(),task.getEndTime()).toMinutes()); } @Value("${robotaxi.sms.app-id:1476153389173952512}") @@ -1485,6 +1487,7 @@ private String ROBOTAXI_VERIFY_CODE_SMS_TPL; @Resource private SmsClient smsClient; private void noticeAdministrator(XpTask task) { SmsVo smsVo = new SmsVo(); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
@@ -1,16 +1,24 @@ package com.xiaopeng.operation.controller; import com.xiaopeng.api.model.operation.XpActicity; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.utils.bean.BeanUtils; import com.xiaopeng.operation.service.IXpActicityService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.time.Duration; import java.time.LocalDateTime; import java.util.List; /** @@ -41,4 +49,32 @@ } return R.ok(xpActicityService.findListToIds(acticityName)); } @Resource RedisTemplate<String, String> redisTemplate; /** * 是否第一次进入某活动 * @return 活动信息,id 和 img */ @PostMapping("/logan/inner/acticity/findListToIds") @ApiOperation(value = "获取活动信息ids", tags = {"管理后台-活动首次进入情况"}) public R<XpActicity> firstEnter(HttpServletRequest request){ String uid = request.getHeader("XP-Uid"); ValueOperations<String, String> ops = redisTemplate.opsForValue(); XpActicity acticity = xpActicityService.activiting(); XpActicity ret = new XpActicity(); if (acticity !=null) { BeanUtils.copyBeanProp(ret, acticity); Duration duration = Duration.between(LocalDateTime.now(), acticity.getEndTime()); Boolean isFirst = ops.setIfAbsent(CacheConstants.firstEnterActivity(String.valueOf(acticity.getId()), uid),"1", duration); ret.setIsFirst(isFirst); } return R.ok(acticity); } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java
@@ -17,4 +17,6 @@ List<String> findListToIds(String acticityName); XpActicity activiting(); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; import java.util.Random; /** * <p> @@ -24,11 +26,23 @@ @Override public List<String> findListToIds(String acticityName){ LambdaQueryWrapper<XpActicity > query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XpActicity> query = new LambdaQueryWrapper<>(); query.select(XpActicity::getId); query.eq(XpActicity::getDeleted, 0); query.like(XpActicity::getActicityName, acticityName); return listObjs(query, Object::toString); } @Override public XpActicity activiting() { LambdaQueryWrapper<XpActicity> query = new LambdaQueryWrapper<>(); LocalDateTime now = LocalDateTime.now(); query.le(XpActicity::getStartTime, now) .ge(XpActicity::getEndTime, now); List<XpActicity> list = list(query); if(!list.isEmpty()){ return list.get(new Random().nextInt(list.size())); } return null; } }