xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java
@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -22,6 +23,9 @@ @ApiModelProperty(value = "用户id 根据手机号获取") private Long appUserId; @ApiModelProperty("条件金额") private BigDecimal conditionAmount; @ApiModelProperty(value = "优惠券名称") private String title; @@ -57,4 +61,6 @@ @ApiModelProperty(value = "活动名称") private String acticityName; private Long couponid; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -84,9 +84,16 @@ public XpAppUserCouponVo userCouponList(XpUserCouponListQuery query, String uid) { Page<XpAppUserCouponListVo> page = new Page<>(query.getPageNum(), query.getPageSize()); Page<XpAppUserCouponListVo> list = baseMapper.userCouponList(page, query, Long.valueOf(uid)); List<XpAppUserCouponListVo> records = list.getRecords(); for (XpAppUserCouponListVo record : records) { XpCoupon data = xpCouponClient.getCouponById(record.getCouponid()).getData(); if(null != data){ record.setConditionAmount(data.getConditionalAmount()); } } XpAppUserCouponVo vo = new XpAppUserCouponVo(); vo.setTotal((int) page.getTotal()); vo.setList(list.getRecords()); vo.setList(records); return vo; } xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml
@@ -35,6 +35,7 @@ <select id="userCouponList" resultType="com.xiaopeng.account.model.vo.XpAppUserCouponListVo"> select t.*,t.status from ( SELECT id as couponId, coupon_id as couponid, coupon_name as title, money as discountAmount, use_time as useTime, xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRule.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @@ -24,20 +25,24 @@ * 规则名称 */ @TableField("name") @ApiModelProperty(value = "规则名称") private String name; /** * 任务开始时间 */ @TableField("start_time") @ApiModelProperty(value = "任务开始时间") private LocalDateTime startTime; /** * 任务结束时间 */ @TableField("end_time") @ApiModelProperty(value = "任务结束时间") private LocalDateTime endTime; /** * 循环方式(0=不循环,1=每天循环) */ @TableField("cyclic_mode") @ApiModelProperty("循环方式(0=不循环,1=每天循环)") private Integer cyclicMode; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpCruiseCheckInRuleLocation.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -20,20 +21,24 @@ * 打卡点位id */ @TableField("check_location_id") @ApiModelProperty(value = "打卡点位id") private Long checkLocationId; /** * 打卡开始时段 */ @TableField("start_time") @ApiModelProperty(value = "打卡开始时段") private String startTime; /** * 打卡结束时段 */ @TableField("end_time") @ApiModelProperty(value = "打卡结束时段") private String endTime; /** * 打卡顺序 */ @TableField("sort") @ApiModelProperty(value = "打卡顺序") private Integer sort; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java
@@ -1,13 +1,17 @@ package com.xiaopeng.maintenance.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRecord; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; import com.xiaopeng.api.model.operation.SysOperLog; import com.xiaopeng.api.vo.account.LoginOperationUser; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.utils.poi.ExcelUtil; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleDto; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleListPageDto; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInLocationVo; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; import com.xiaopeng.maintenance.model.vo.CheckInMessageVo; @@ -16,6 +20,7 @@ import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleService; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordQuery; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordVO; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import com.xiaopeng.maintenance.vo.XpCruiseCheckInStatisticsQuery; import com.xiaopeng.maintenance.vo.XpCruiseCheckInStatisticsVO; import io.swagger.annotations.ApiImplicitParam; @@ -99,6 +104,33 @@ return R.ok(cruiseCheckInRecordInfo); } @ApiOperation(value = "查询巡游打卡规则列表", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/getXpCruiseCheckInRuleListPage") public R<Page<XpCruiseCheckInRuleListPage>> getXpCruiseCheckInRuleListPage(XpCruiseCheckInRuleListPageDto dto){ Page<XpCruiseCheckInRuleListPage> pageInfo = PageInfo.of(dto.getPageNum(), dto.getPageSize()); List<XpCruiseCheckInRuleListPage> xpCruiseCheckInRuleListPage = xpCruiseCheckInRuleService.getXpCruiseCheckInRuleListPage(pageInfo, dto); pageInfo.setRecords(xpCruiseCheckInRuleListPage); return R.ok(pageInfo); } @ApiOperation(value = "添加巡游打卡规则", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/addXpCruiseCheckInRule") public R<?> addXpCruiseCheckInRule(@RequestBody XpCruiseCheckInRuleDto dto){ xpCruiseCheckInRuleService.addXpCruiseCheckInRule(dto); return R.ok(); } @ApiOperation(value = "删除巡游打卡规则", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/delXpCruiseCheckInRule/{id}") public R<?> delXpCruiseCheckInRule(@PathVariable("id") Integer id){ xpCruiseCheckInRuleService.removeById(id); return R.ok(); } @ApiOperation(value = "查询巡游打卡记录列表", tags = {"管理后台-巡游打卡管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/pageList") public R<PageInfo<XpCruiseCheckInRecordVO>> pageList(@RequestBody XpCruiseCheckInRecordQuery query) { xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleDto.java
New file @@ -0,0 +1,18 @@ package com.xiaopeng.maintenance.dto; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRuleLocation; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel public class XpCruiseCheckInRuleDto extends XpCruiseCheckInRule { @ApiModelProperty("关联人id") private Long relationId; @ApiModelProperty("打卡点位id") private List<XpCruiseCheckInRuleLocation> points; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpCruiseCheckInRuleListPageDto.java
New file @@ -0,0 +1,21 @@ package com.xiaopeng.maintenance.dto; import com.xiaopeng.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel public class XpCruiseCheckInRuleListPageDto extends BasePage { @ApiModelProperty("规则名称") private String name; @ApiModelProperty("执行人员名称") private String userName; @ApiModelProperty("手机号") private String phoneNumber; private List<Integer> ids; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpCruiseCheckInRuleMapper.java
@@ -1,10 +1,23 @@ package com.xiaopeng.maintenance.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleListPageDto; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import org.apache.ibatis.annotations.Param; import java.util.List; public interface XpCruiseCheckInRuleMapper extends BaseMapper<XpCruiseCheckInRule> { /** * 获取巡游打卡规则额列表 * @param pageInfo * @param dto * @return */ List<XpCruiseCheckInRuleListPage> getXpCruiseCheckInRuleListPage(Page<XpCruiseCheckInRuleListPage> pageInfo, XpCruiseCheckInRuleListPageDto dto); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpCruiseCheckInRuleOperationsUserMapper.java
New file @@ -0,0 +1,7 @@ package com.xiaopeng.maintenance.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRuleOperationsUser; public interface XpCruiseCheckInRuleOperationsUserMapper extends BaseMapper<XpCruiseCheckInRuleOperationsUser> { } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java
@@ -1,12 +1,16 @@ package com.xiaopeng.maintenance.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRecord; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleDto; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleListPageDto; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInLocationVo; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; import com.xiaopeng.maintenance.model.vo.CheckInMessageVo; import com.xiaopeng.maintenance.model.vo.RealTimePositionVo; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -55,4 +59,20 @@ * @return */ XpCruiseCheckInRecord getCruiseCheckInRecordInfo(Integer ruleId, Long locationId, Long uid); /** * 获取巡游打卡规则列表数据 * @param pageInfo * @param dto * @return */ List<XpCruiseCheckInRuleListPage> getXpCruiseCheckInRuleListPage(Page<XpCruiseCheckInRuleListPage> pageInfo, XpCruiseCheckInRuleListPageDto dto); /** * 新增巡游打卡规则 * @param dto */ void addXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java
@@ -1,17 +1,24 @@ package com.xiaopeng.maintenance.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRecord; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRuleLocation; import com.xiaopeng.api.feignClient.account.XpOperationUserClient; import com.xiaopeng.api.feignClient.account.XpOperationsUserClient; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.*; import com.xiaopeng.common.core.exception.ServiceException; import com.xiaopeng.common.core.utils.GeodesyUtil; import com.xiaopeng.common.core.utils.StringUtils; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.maintenance.constant.I18nKeyConstant; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleDto; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleListPageDto; import com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleMapper; import com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleOperationsUserMapper; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInLocationVo; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; import com.xiaopeng.maintenance.model.vo.CheckInMessageVo; @@ -20,6 +27,8 @@ import com.xiaopeng.maintenance.service.IXpCruiseCheckInRecordService; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleLocationService; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleService; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -49,6 +58,12 @@ private IXpCheckLocationService xpCheckLocationService; @Autowired private RedisService redisService; @Resource private XpOperationUserClient xpOperationsUserClient; @Resource private XpCruiseCheckInRuleOperationsUserMapper xpCruiseCheckInRuleOperationsUserMapper; @Override @@ -245,4 +260,58 @@ .eq(XpCruiseCheckInRecord::getOperationsUserId, uid) .last(" and DATE(check_in_time) = DATE(NOW())")); } /** * 获取巡游打卡规则列表 * @param pageInfo * @param dto * @return */ @Override public List<XpCruiseCheckInRuleListPage> getXpCruiseCheckInRuleListPage(Page<XpCruiseCheckInRuleListPage> pageInfo, XpCruiseCheckInRuleListPageDto dto) { List<Long> ids = new ArrayList<>(); if(StringUtils.isNotEmpty(dto.getUserName())){ List<XpOperationsUser> data = xpOperationsUserClient.listByName(dto.getUserName()).getData(); ids.addAll(data.stream().map(XpOperationsUser::getId).collect(Collectors.toList())); } if(StringUtils.isNotEmpty(dto.getPhoneNumber())){ List<XpOperationsUser> data = xpOperationsUserClient.getByPhoneNumber(dto.getPhoneNumber()).getData(); ids.addAll(data.stream().map(XpOperationsUser::getId).collect(Collectors.toList())); } if(!list().isEmpty()){ List<XpCruiseCheckInRuleOperationsUser> operationsUserId = xpCruiseCheckInRuleOperationsUserMapper.selectList(new QueryWrapper<XpCruiseCheckInRuleOperationsUser>().in("operations_user_id", ids)); List<Integer> ruleIds = operationsUserId.stream().map(XpCruiseCheckInRuleOperationsUser::getCruiseCheckInRuleId).collect(Collectors.toList()); dto.setIds(ruleIds); } List<XpCruiseCheckInRuleListPage> xpCruiseCheckInRuleListPage = this.baseMapper.getXpCruiseCheckInRuleListPage(pageInfo, dto); return xpCruiseCheckInRuleListPage; } /** * 新增巡游打卡规则 * @param dto */ @Override public void addXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto) { XpCruiseCheckInRule one = this.getOne(new QueryWrapper<XpCruiseCheckInRule>().like("name", dto.getName()).eq("is_deleted", 0)); if(null != one){ throw new ServiceException("巡游打卡规则名称已存在"); } XpCruiseCheckInRule xpCruiseCheckInRule = new XpCruiseCheckInRule(); BeanUtils.copyProperties(dto, xpCruiseCheckInRule); xpCruiseCheckInRule.setDeleted(false); this.save(xpCruiseCheckInRule); dto.getPoints().forEach(s->{ s.setCruiseCheckInRuleId(xpCruiseCheckInRule.getId()); }); xpCruiseCheckInRuleLocationService.saveBatch(dto.getPoints()); Long relationId = dto.getRelationId(); XpCruiseCheckInRuleOperationsUser xpCruiseCheckInRuleOperationsUser = new XpCruiseCheckInRuleOperationsUser(); xpCruiseCheckInRuleOperationsUser.setCruiseCheckInRuleId(xpCruiseCheckInRule.getId()); xpCruiseCheckInRuleOperationsUser.setOperationsUserId(relationId); xpCruiseCheckInRuleOperationsUserMapper.insert(xpCruiseCheckInRuleOperationsUser); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleListPage.java
New file @@ -0,0 +1,22 @@ package com.xiaopeng.maintenance.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel public class XpCruiseCheckInRuleListPage { @ApiModelProperty("规则id") private Long id; @ApiModelProperty("打卡规则名称") private String name; @ApiModelProperty("关联点位数量") private Integer pointNum; @ApiModelProperty("执行人员") private String userName; @ApiModelProperty("手机号") private String phone; @ApiModelProperty("人员角色") private String roleName; } xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRuleLocationMapper.xml
New file @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleLocationMapper"> </mapper> xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRuleMapper.xml
@@ -1,4 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleMapper"> <select id="getXpCruiseCheckInRuleListPage" resultType="com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage"> select id,`name` from xp_cruise_check_in_rule where is_deleted = 0 <if test="null != dto.name and dto.name != ''"> and `name` like concat('%', #{dto.name}, '%') </if> <if test="null != dto.ids and dto.ids.size() > 0"> <foreach collection="dto.ids" item="id" open="and id in (" separator="," close=")"> #{id} </foreach> </if> order by create_time desc </select> </mapper> xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRuleOperationsUserMapper.xml
New file @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleOperationsUserMapper"> </mapper>