提交 16622ec8 authored 作者: 吕本才's avatar 吕本才

feat(promotion-service): 新增打卡信息查询接口并优化小程序的模板信息环境

上级 03d96930
...@@ -41,4 +41,6 @@ public interface TemporaryActivityClockDao { ...@@ -41,4 +41,6 @@ public interface TemporaryActivityClockDao {
void employeePage(String employeeQcId, PageInfo pageInfo,TemporaryClockWrapper tcw); void employeePage(String employeeQcId, PageInfo pageInfo,TemporaryClockWrapper tcw);
TemporaryClockDto findLatestClockByTemporaryId(Integer temporaryId); TemporaryClockDto findLatestClockByTemporaryId(Integer temporaryId);
TemporaryClockDto findClockInfo(TemporaryClockWrapper wr);
} }
...@@ -100,6 +100,13 @@ public class TemporaryActivityClockDaoImpl implements TemporaryActivityClockDao ...@@ -100,6 +100,13 @@ public class TemporaryActivityClockDaoImpl implements TemporaryActivityClockDao
return transitionDto(clockDO); return transitionDto(clockDO);
} }
@Override
public TemporaryClockDto findClockInfo(TemporaryClockWrapper wr) {
TemporaryActivityClockDO clockDO = temporaryActivityClockMapper.selectOne(buildWrapper(wr));
TemporaryClockDto clockDto = transitionDto(clockDO);
return clockDto;
}
private LambdaQueryWrapper<TemporaryActivityClockDO> buildWrapper(TemporaryClockWrapper tcw) { private LambdaQueryWrapper<TemporaryActivityClockDO> buildWrapper(TemporaryClockWrapper tcw) {
LambdaQueryWrapper<TemporaryActivityClockDO> qw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TemporaryActivityClockDO> qw = new LambdaQueryWrapper<>();
if (Objects.nonNull(tcw.getId())) { if (Objects.nonNull(tcw.getId())) {
......
...@@ -195,7 +195,8 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao ...@@ -195,7 +195,8 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
@Override @Override
public Map<Integer, TemporaryActivityPhotoDto> findClockPhotoGroupByClockId(Long clockId) { public Map<Integer, TemporaryActivityPhotoDto> findClockPhotoGroupByClockId(Long clockId) {
LambdaQueryWrapper<TemporaryActivityPhotoDO> wq = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TemporaryActivityPhotoDO> wq = new LambdaQueryWrapper<>();
wq.eq(TemporaryActivityPhotoDO::getClockId, clockId).eq(TemporaryActivityPhotoDO::getIsDelete, StatusType.VALID.getType()); wq.eq(TemporaryActivityPhotoDO::getClockId, clockId)
.eq(TemporaryActivityPhotoDO::getIsDelete, StatusType.VALID.getType());
List<TemporaryActivityPhotoDO> dos = temporaryActivityPhotoMapper.selectList(wq); List<TemporaryActivityPhotoDO> dos = temporaryActivityPhotoMapper.selectList(wq);
List<TemporaryActivityPhotoDto> photoDtos = transitionDtos(dos); List<TemporaryActivityPhotoDto> photoDtos = transitionDtos(dos);
Map<Integer, TemporaryActivityPhotoDto> dtoMap = photoDtos.stream().collect(Collectors.toMap(TemporaryActivityPhotoDto::getType, pDto -> pDto)); Map<Integer, TemporaryActivityPhotoDto> dtoMap = photoDtos.stream().collect(Collectors.toMap(TemporaryActivityPhotoDto::getType, pDto -> pDto));
......
...@@ -19,4 +19,5 @@ public interface TemporaryActivityClockQueryService { ...@@ -19,4 +19,5 @@ public interface TemporaryActivityClockQueryService {
TemporaryClockDto findLatestClockByTemporaryId(Integer temporaryId); TemporaryClockDto findLatestClockByTemporaryId(Integer temporaryId);
TemporaryClockDto findClockInfo(TemporaryClockWrapper wr);
} }
...@@ -19,8 +19,8 @@ import java.util.Map; ...@@ -19,8 +19,8 @@ import java.util.Map;
@Service @Service
@Slf4j @Slf4j
public class SubscribeMessageService { public class SubscribeMessageService {
// @Value("${wx.miniapp.subscribe-message-url}") @Value("${wx.cx_miniapp.miniprogram_state:formal}")
// private String subscribeUrl; private String miniprogramState;
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
...@@ -45,6 +45,8 @@ public class SubscribeMessageService { ...@@ -45,6 +45,8 @@ public class SubscribeMessageService {
requestBody.put("template_id", templateId); requestBody.put("template_id", templateId);
// 跳转页面 // 跳转页面
requestBody.put("page", page); requestBody.put("page", page);
// 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
requestBody.put("miniprogram_state", miniprogramState);
// 格式化模板数据(微信要求格式:{"字段名":{"value":"内容"}}) // 格式化模板数据(微信要求格式:{"字段名":{"value":"内容"}})
Map<String, Map<String, String>> dataMap = new HashMap<>(); Map<String, Map<String, String>> dataMap = new HashMap<>();
......
...@@ -83,6 +83,17 @@ public class TemporaryActivityClockQueryServiceImpl implements TemporaryActivity ...@@ -83,6 +83,17 @@ public class TemporaryActivityClockQueryServiceImpl implements TemporaryActivity
return temporaryActivityClockDao.findLatestClockByTemporaryId(temporaryId); return temporaryActivityClockDao.findLatestClockByTemporaryId(temporaryId);
} }
/**
* 查询打卡主信息
* @param wr
* @return
*/
@Override
public TemporaryClockDto findClockInfo(TemporaryClockWrapper wr) {
TemporaryClockDto temporaryClockDto = temporaryActivityClockDao.findClockInfo(wr);
return temporaryClockDto;
}
/** /**
* 查询打卡图片 * 查询打卡图片
*/ */
......
package com.wangxiaolu.promotion.service.activity.temporary.impl; package com.wangxiaolu.promotion.service.activity.temporary.impl;
import cn.hutool.core.date.CalendarUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -12,6 +10,7 @@ import com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityTaskCloc ...@@ -12,6 +10,7 @@ import com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityTaskCloc
import com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityTaskClockDO; import com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityTaskClockDO;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityTaskClockDao; import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityTaskClockDao;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryActivityTaskWrapperDto; import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryActivityTaskWrapperDto;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryClockWrapper;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryPhotoWrapper; import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryPhotoWrapper;
import com.wangxiaolu.promotion.enums.activity.ActivityClockTaskStatus; import com.wangxiaolu.promotion.enums.activity.ActivityClockTaskStatus;
import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType; import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType;
...@@ -19,6 +18,7 @@ import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityPho ...@@ -19,6 +18,7 @@ import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityPho
import com.wangxiaolu.promotion.pojo.activity.temporary.res.TemporaryActivityTaskClockRes; import com.wangxiaolu.promotion.pojo.activity.temporary.res.TemporaryActivityTaskClockRes;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityTaskClockReq; import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityTaskClockReq;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityClockQueryService;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityTaskClockService; import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityTaskClockService;
import com.wangxiaolu.promotion.utils.AuthUtils; import com.wangxiaolu.promotion.utils.AuthUtils;
import com.wangxiaolu.promotion.utils.DateUtils; import com.wangxiaolu.promotion.utils.DateUtils;
...@@ -27,7 +27,6 @@ import org.springframework.util.CollectionUtils; ...@@ -27,7 +27,6 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
...@@ -40,6 +39,8 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary ...@@ -40,6 +39,8 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
private TemporaryActivityTaskClockDao temporaryActivityTaskClockDao; private TemporaryActivityTaskClockDao temporaryActivityTaskClockDao;
@Resource @Resource
private TemporaryActivityPhotoDao photoDao; private TemporaryActivityPhotoDao photoDao;
@Resource
private TemporaryActivityClockQueryService clockQueryService;
@Override @Override
public List<TemporaryActivityTaskClockDO> listByTemporaryId(Long temporaryId) { public List<TemporaryActivityTaskClockDO> listByTemporaryId(Long temporaryId) {
...@@ -171,9 +172,16 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary ...@@ -171,9 +172,16 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
temporaryActivityTaskClockDao.update(taskClockDO); temporaryActivityTaskClockDao.update(taskClockDO);
TemporaryClockWrapper wr = new TemporaryClockWrapper();
wr.setId(taskClockDO.getClockId());
TemporaryClockDto clockDto = clockQueryService.findClockInfo(wr);
TemporaryActivityPhotoDto dto = new TemporaryActivityPhotoDto(); TemporaryActivityPhotoDto dto = new TemporaryActivityPhotoDto();
dto.setClockId(taskClockDO.getClockId()) dto.setClockId(taskClockDO.getClockId())
.setTemporaryId(taskClockDO.getTemporaryId()) .setTemporaryId(taskClockDO.getTemporaryId())
// reportedId 问题
.setReportedId(clockDto.getReportedId())
.setClockId(taskClockDO.getClockId()) .setClockId(taskClockDO.getClockId())
.setType(clockVo.getTaskType()); .setType(clockVo.getTaskType());
if (CollectionUtils.isEmpty(clockVo.getClockPhotos())) { if (CollectionUtils.isEmpty(clockVo.getClockPhotos())) {
......
...@@ -89,6 +89,7 @@ public class ActivityStautsHandler { ...@@ -89,6 +89,7 @@ public class ActivityStautsHandler {
msgBean.setData(taskClockDO); msgBean.setData(taskClockDO);
taskClockSocketHandler.sendToUser(taskClockDO.getTemporaryId().toString(), msgBean); taskClockSocketHandler.sendToUser(taskClockDO.getTemporaryId().toString(), msgBean);
log.info("发送websocket信息,用户id:{}", taskClockDO.getTemporaryId()); log.info("发送websocket信息,用户id:{}", taskClockDO.getTemporaryId());
DateTime requiredlockTime = DateUtil.offsetMinute(taskClockDO.getRequiredlockTime(), 15);
// 2. 构建模板数据(根据小程序订阅模板的字段定义) // 2. 构建模板数据(根据小程序订阅模板的字段定义)
...@@ -96,7 +97,7 @@ public class ActivityStautsHandler { ...@@ -96,7 +97,7 @@ public class ActivityStautsHandler {
// 模板中的字段1发布人 // 模板中的字段1发布人
data.put("thing2", "小卤促销平台"); data.put("thing2", "小卤促销平台");
// 模板中的字段2 截止时间 // 模板中的字段2 截止时间
data.put("time3", DateUtil.format(taskClockDO.getRequiredlockTime(),"yyyy-MM-dd HH:mm")); data.put("time3", DateUtil.format(requiredlockTime,"yyyy-MM-dd HH:mm"));
// 模板中的字段3 任务名称 // 模板中的字段3 任务名称
data.put("thing1", "销售金额需完成任务"); data.put("thing1", "销售金额需完成任务");
// 模板中的字段4 温馨提示 // 模板中的字段4 温馨提示
......
...@@ -45,6 +45,7 @@ wx: ...@@ -45,6 +45,7 @@ wx:
cx_miniapp: cx_miniapp:
app_id: wxac14dc7765484d7d app_id: wxac14dc7765484d7d
app_secret: e73b574380a822c942e03ea4dc67aaa1 app_secret: e73b574380a822c942e03ea4dc67aaa1
miniprogram_state: trial
tengxunyun: tengxunyun:
# 腾讯云个人账号信息 # 腾讯云个人账号信息
......
...@@ -43,6 +43,8 @@ wx: ...@@ -43,6 +43,8 @@ wx:
cx_miniapp: cx_miniapp:
app_id: wxac14dc7765484d7d app_id: wxac14dc7765484d7d
app_secret: e73b574380a822c942e03ea4dc67aaa1 app_secret: e73b574380a822c942e03ea4dc67aaa1
miniprogram_state: fomal
tengxunyun: tengxunyun:
# 腾讯云个人账号信息 # 腾讯云个人账号信息
secret_d: AKIDVt353sWyY0GXn0ANa0YyGdwDIBtjQwGS secret_d: AKIDVt353sWyY0GXn0ANa0YyGdwDIBtjQwGS
......
...@@ -43,6 +43,8 @@ wx: ...@@ -43,6 +43,8 @@ wx:
cx_miniapp: cx_miniapp:
app_id: wxac14dc7765484d7d app_id: wxac14dc7765484d7d
app_secret: e73b574380a822c942e03ea4dc67aaa1 app_secret: e73b574380a822c942e03ea4dc67aaa1
miniprogram_state: trial
tengxunyun: tengxunyun:
# 腾讯云个人账号信息 # 腾讯云个人账号信息
secret_d: AKIDVt353sWyY0GXn0ANa0YyGdwDIBtjQwGS secret_d: AKIDVt353sWyY0GXn0ANa0YyGdwDIBtjQwGS
......
...@@ -27,9 +27,9 @@ ...@@ -27,9 +27,9 @@
</update> </update>
<insert id="insertList"> <insert id="insertList">
insert into temporary_activity_photo (temporary_id, reported_id, type, photo_url, photo_filed_id) insert into temporary_activity_photo (temporary_id, reported_id,clock_id, type, photo_url, photo_filed_id)
<foreach collection="dos" item="item" index="index" separator=" UNION ALL "> <foreach collection="dos" item="item" index="index" separator=" UNION ALL ">
SELECT #{item.temporaryId}, #{item.reportedId}, #{item.type}, #{item.photoUrl}, #{item.photoFiledId} FROM dual SELECT #{item.temporaryId}, #{item.reportedId}, #{item.clockId}, #{item.type}, #{item.photoUrl}, #{item.photoFiledId} FROM dual
WHERE NOT EXISTS( SELECT 1 FROM temporary_activity_photo WHERE reported_id = #{item.reportedId} AND type = #{item.type} AND photo_filed_id = #{item.photoFiledId} ) WHERE NOT EXISTS( SELECT 1 FROM temporary_activity_photo WHERE reported_id = #{item.reportedId} AND type = #{item.type} AND photo_filed_id = #{item.photoFiledId} )
</foreach> </foreach>
</insert> </insert>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论