提交 67eeed5a authored 作者: 000516's avatar 000516 提交者: Coding

1、打卡选择活动模式;2、活动记录、活动历史记录展示活动模式;

1、打卡选择活动模式;2、活动记录、活动历史记录展示活动模式;
...@@ -9,6 +9,7 @@ import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto; ...@@ -9,6 +9,7 @@ import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryClockVo; import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryClockVo;
import com.wangxiaolu.promotion.result.basedata.R; import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.result.basedata.RCode; import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityClockCoreService;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService; import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -23,7 +24,7 @@ import java.util.Objects; ...@@ -23,7 +24,7 @@ import java.util.Objects;
/** /**
* @author : liqiulin * @author : liqiulin
* @date : 2024-04-17 19 * @date : 2024-04-17 19
* @describe : 促销员活动上报、修改 * @describe : 促销员打卡信息保存
*/ */
@Slf4j @Slf4j
@RestController @RestController
...@@ -31,7 +32,7 @@ import java.util.Objects; ...@@ -31,7 +32,7 @@ import java.util.Objects;
public class TemporaryActivityClockCoreController { public class TemporaryActivityClockCoreController {
@Autowired @Autowired
private TemporaryActivityCoreService tempActivityCoreService; private TemporaryActivityClockCoreService tempActivityClockCoreService;
@Autowired @Autowired
RedisCache redisCache; RedisCache redisCache;
...@@ -53,7 +54,7 @@ public class TemporaryActivityClockCoreController { ...@@ -53,7 +54,7 @@ public class TemporaryActivityClockCoreController {
} }
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡 // 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
// tempActivityCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates()); // tempActivityClockCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates());
// 限制重复提交 // 限制重复提交
repetitiveClock(clockVo); repetitiveClock(clockVo);
...@@ -70,7 +71,7 @@ public class TemporaryActivityClockCoreController { ...@@ -70,7 +71,7 @@ public class TemporaryActivityClockCoreController {
} else if (ClockType.TEMPORARY_CLOCK_OUT.equals(clockType)) { } else if (ClockType.TEMPORARY_CLOCK_OUT.equals(clockType)) {
builderClockOutData(clockVo, dto, clockTime); builderClockOutData(clockVo, dto, clockTime);
} }
tempActivityCoreService.clockInTodayActivity(dto, clockType); tempActivityClockCoreService.clockInTodayActivity(dto, clockType);
return R.success(); return R.success();
} }
...@@ -100,7 +101,9 @@ public class TemporaryActivityClockCoreController { ...@@ -100,7 +101,9 @@ public class TemporaryActivityClockCoreController {
.setClockInAddress(clockVo.getClockAddress()) .setClockInAddress(clockVo.getClockAddress())
.setClockInCoordinates(clockVo.getClockCoordinates()) .setClockInCoordinates(clockVo.getClockCoordinates())
.setClockInPhoto(clockVo.getClockPhoto()) .setClockInPhoto(clockVo.getClockPhoto())
.setClockInTime(dateTime); .setClockInTime(dateTime)
.setActivityPatternId(clockVo.getActivityPatternId())
.setActivityPattern(clockVo.getActivityPattern());
} }
// 午休下班卡 // 午休下班卡
......
package com.wangxiaolu.promotion.controller.activity.temporary; package com.wangxiaolu.promotion.controller.activity.temporary;
import com.alibaba.fastjson.JSONObject;
import com.wangxiaolu.promotion.common.redis.RedisKeys;
import com.wangxiaolu.promotion.common.redis.service.RedisCache;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityDataVo; import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityDataVo;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityMarketCellVo; import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityMarketCellVo;
import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto;
import com.wangxiaolu.promotion.result.basedata.R; import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityClockQueryService;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService; import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -21,25 +30,45 @@ import java.util.Objects; ...@@ -21,25 +30,45 @@ import java.util.Objects;
@RestController @RestController
@RequestMapping("/activity/temporary/core") @RequestMapping("/activity/temporary/core")
public class TemporaryActivityCoreController { public class TemporaryActivityCoreController {
@Autowired
private RedisCache redisCache;
@Autowired @Autowired
private TemporaryActivityCoreService tempActivityCoreService; private TemporaryActivityCoreService tempActivityCoreService;
@Autowired
private TemporaryActivityClockQueryService tempActivityClockQueryService;
/** /**
* 促销员[今日活动]数据保存 * 促销员[今日活动]数据保存
* 返回活动生成id * 返回活动生成id
*/ */
@PostMapping("/today/reported") @PostMapping("/today/reported")
public R todayActivityDataReported(@RequestBody TemporaryActivityDataVo activityVo) { public R todayActivityDataReported(@RequestHeader("Authorization") String authorization, @RequestBody TemporaryActivityDataVo activityVo) {
TemporaryActivityReportedDto temActDto = new TemporaryActivityReportedDto(); TemporaryActivityReportedDto temActDto = new TemporaryActivityReportedDto();
BeanUtils.copyProperties(activityVo, temActDto); BeanUtils.copyProperties(activityVo, temActDto);
temActDto.setId(activityVo.getActivityReportedId()); temActDto.setId(activityVo.getActivityReportedId());
// 有ID则修改,无ID则新建 /**
* 已有id,修改任务
*/
if (Objects.nonNull(activityVo.getActivityReportedId())) { if (Objects.nonNull(activityVo.getActivityReportedId())) {
tempActivityCoreService.activityDataReportedUpdate(temActDto); tempActivityCoreService.activityDataReportedUpdate(temActDto);
return R.success(activityVo.getActivityReportedId()); return R.success(activityVo.getActivityReportedId());
} }
/**
* 新增任务
*/
JSONObject userJson = redisCache.getToJson(RedisKeys.UserKeys.TEMPORARY_TOKEN.getKey() + authorization);
if (Objects.isNull(userJson)) {
throw new ParamException(RCode.NOT_LOGIN_ERROR, null);
}
TemporaryClockDto clockDto = tempActivityClockQueryService.findTodayTemporaryClockByTemId(temActDto.getTemporaryId());
temActDto.setApproveStatus(TemActApproveStatus.SUBMITTED);
temActDto.setApproverId(userJson.getString("chargerQcId"));
temActDto.setApproveName(userJson.getString("chargerName"));
temActDto.setActivityPatternId(clockDto.getActivityPatternId());
temActDto.setActivityPattern(clockDto.getActivityPattern());
return R.success(tempActivityCoreService.activityDataReportedSave(temActDto)); return R.success(tempActivityCoreService.activityDataReportedSave(temActDto));
} }
......
...@@ -55,6 +55,9 @@ public class WeChatUserQueryController { ...@@ -55,6 +55,9 @@ public class WeChatUserQueryController {
public R getTemporaryInfoByOpenIdAndPhone(@RequestHeader("Authorization") String authorization, @RequestBody WxTemporaryLoginVo wxTemporaryLoginVo) { public R getTemporaryInfoByOpenIdAndPhone(@RequestHeader("Authorization") String authorization, @RequestBody WxTemporaryLoginVo wxTemporaryLoginVo) {
// 在缓存中查询 // 在缓存中查询
JSONObject userJson = redisCache.getToJson(RedisKeys.UserKeys.TEMPORARY_TOKEN.getKey() + authorization); JSONObject userJson = redisCache.getToJson(RedisKeys.UserKeys.TEMPORARY_TOKEN.getKey() + authorization);
if (Objects.isNull(userJson)) {
throw new ParamException(RCode.NOT_LOGIN_ERROR, null);
}
return R.success(userJson); return R.success(userJson);
// phontAndOpenIdVerify(wxTemporaryLoginVo); // phontAndOpenIdVerify(wxTemporaryLoginVo);
......
...@@ -40,7 +40,7 @@ public class TemporaryActivityMarketCellDaoImpl implements TemporaryActivityMark ...@@ -40,7 +40,7 @@ public class TemporaryActivityMarketCellDaoImpl implements TemporaryActivityMark
JSONObject jo = (JSONObject) jri; JSONObject jo = (JSONObject) jri;
TemporaryActivityMarketCellDO marketCellDO = JSONObject.parseObject(jo.toString(), TemporaryActivityMarketCellDO.class); TemporaryActivityMarketCellDO marketCellDO = JSONObject.parseObject(jo.toString(), TemporaryActivityMarketCellDO.class);
marketCellDO.setActivityReportedId(activityReportedId); marketCellDO.setActivityReportedId(activityReportedId);
marketCellDO.setClassName(jo.getString("prdName")); marketCellDO.setClassName(jo.getString("prdClassName"));
marketCellDO.setCreateDate(DateUtil.today()); marketCellDO.setCreateDate(DateUtil.today());
dos.add(marketCellDO); dos.add(marketCellDO);
}); });
......
...@@ -142,6 +142,12 @@ public class TemporaryActivityClockDO implements Serializable { ...@@ -142,6 +142,12 @@ public class TemporaryActivityClockDO implements Serializable {
@TableField(exist = false) @TableField(exist = false)
String chargerName; String chargerName;
// 活动模式Id
Integer activityPatternId;
// 活动模式
String activityPattern;
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -59,6 +59,16 @@ public class TemporaryActivityReportedDO implements Serializable { ...@@ -59,6 +59,16 @@ public class TemporaryActivityReportedDO implements Serializable {
*/ */
private String city; private String city;
/**
* 活动模式Id
*/
Integer activityPatternId;
/**
* 活动模式
*/
String activityPattern;
/** /**
* 关联—审核人员qc_id * 关联—审核人员qc_id
*/ */
......
...@@ -60,6 +60,16 @@ public class TemporaryActivityReportedDto { ...@@ -60,6 +60,16 @@ public class TemporaryActivityReportedDto {
*/ */
private String city; private String city;
/**
* 活动模式Id
*/
Integer activityPatternId;
/**
* 活动模式
*/
String activityPattern;
/** /**
* 关联—审核人员qc_id * 关联—审核人员qc_id
* *
......
...@@ -105,6 +105,12 @@ public class TemporaryClockDto { ...@@ -105,6 +105,12 @@ public class TemporaryClockDto {
*/ */
String chargerName; String chargerName;
// 活动模式Id
Integer activityPatternId;
// 活动模式
String activityPattern;
public TemporaryClockDto(Integer clockType, Long id, Integer temporaryId, String temporaryName, String clockProvince, String clockCity) { public TemporaryClockDto(Integer clockType, Long id, Integer temporaryId, String temporaryName, String clockProvince, String clockCity) {
if (!ClockType.TEMPORARY_CLOCK_IN.equals(clockType)) { if (!ClockType.TEMPORARY_CLOCK_IN.equals(clockType)) {
this.id = id; this.id = id;
......
...@@ -62,9 +62,11 @@ public class TemporaryClockVo { ...@@ -62,9 +62,11 @@ public class TemporaryClockVo {
// 打卡城市 // 打卡城市
String clockCity; String clockCity;
// 活动模式Id
Integer activityPatternId;
// 活动模式
String activityPattern;
public void validate(){ public void validate(){
...@@ -77,7 +79,9 @@ public class TemporaryClockVo { ...@@ -77,7 +79,9 @@ public class TemporaryClockVo {
if (StringUtils.isBlank(clockAddress) || StringUtils.isBlank(clockPhoto)){ if (StringUtils.isBlank(clockAddress) || StringUtils.isBlank(clockPhoto)){
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null); throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
} }
if (StringUtils.isBlank(this.activityPattern)){
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
}
} }
} }
package com.wangxiaolu.promotion.service.activity.temporary;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
/**
* @author : liqiulin
* @date : 2024-07-02 10
* @describe :
*/
public interface TemporaryActivityClockCoreService {
/**
* 促销员当日打卡信息保存
*/
void clockInTodayActivity(TemporaryClockDto dto, Integer clockType);
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
void clockStoreCalDistance(String storeQcId, Long id, String clockCoordinates);
}
...@@ -21,25 +21,11 @@ public interface TemporaryActivityCoreService { ...@@ -21,25 +21,11 @@ public interface TemporaryActivityCoreService {
*/ */
void activityDataReportedUpdate(TemporaryActivityReportedDto temActDto); void activityDataReportedUpdate(TemporaryActivityReportedDto temActDto);
/**
* 促销员当日打卡信息保存
*/
void clockInTodayActivity(TemporaryClockDto dto, Integer clockType);
/** /**
* 活动上报数据修改审批状态 * 活动上报数据修改审批状态
*/ */
void activityReportedSubmit(Long id); void activityReportedSubmit(Long id);
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
void clockStoreCalDistance(String storeQcId, Long id, String clockCoordinates);
/** /**
* 保存销售上报-出售单元 - 缓存 * 保存销售上报-出售单元 - 缓存
*/ */
......
package com.wangxiaolu.promotion.service.activity.temporary.impl;
import com.alibaba.fastjson.JSONObject;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityClockDao;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityLogDao;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao;
import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType;
import com.wangxiaolu.promotion.enums.activity.ClockType;
import com.wangxiaolu.promotion.enums.activity.LogType;
import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityClockCoreService;
import com.wangxiaolu.promotion.utils.OkHttp;
import com.wangxiaolu.promotion.utils.QinCeUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2024-07-02 10
* @describe :
*/
@Service
@Slf4j
public class TemporaryActivityClockCoreServiceImpl implements TemporaryActivityClockCoreService {
@Autowired
QinCeUtils qinCeUtils;
@Autowired
private TemporaryActivityClockDao temporaryActivityClockDao;
@Autowired
private TemporaryActivityPhotoDao tempActivityPhotoDao;
@Autowired
private TemporaryActivityLogDao tempActivityLogDao;
/**
* 促销员当日打卡信息保存
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void clockInTodayActivity(TemporaryClockDto dto, Integer clockType) {
log.info("促销员当日打卡[type-{}]信息保存:{}", clockType, dto.toString());
if (Objects.isNull(dto.getId())) {
temporaryActivityClockDao.save(dto);
} else {
temporaryActivityClockDao.updateById(dto);
}
// 根据ID保存图片
saveClockPhoto(dto, clockType);
// 日志保存
tempActivityLogDao.save(dto.getTemporaryId(), dto.getTemporaryName(), LogType.t_1, dto.getId(), dto);
}
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
* 经度,范围为 -180~180,负数表示西经;纬度,范围为 -90~90,负数表示南纬
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
@Override
public void clockStoreCalDistance(String storeQcId, Long id, String clockCoordinates) {
// if (Objects.nonNull(id)) {
// TemporaryClockDto clockDto = temporaryActivityClockDao.selectOne(new TemporaryClockWrapper().setId(id));
// storeQcId = clockDto.getStoreQcId();
// }
// clockStoreCalDistanceByStoreQcId(storeQcId, clockCoordinates);
}
private void clockStoreCalDistanceByStoreQcId(String storeQcId, String clockCoordinates) {
// 查询组织架构参数、创建url
String[] clockCoordinateArr = clockCoordinates.split(",");
List<Map> paramList = qinCeUtils.queryCalDistanceParam(storeQcId, clockCoordinateArr[0], clockCoordinateArr[1]);
String url = qinCeUtils.builderUrlList(QinCeUtils.CAL_DISTANCE, paramList);
// 发起请求、接收结果
JSONObject resultJson = OkHttp.postQC(url, paramList);
String rData = resultJson.getString("response_data");
if (StringUtils.isBlank(rData) || !rData.contains(storeQcId)) {
throw new ParamException(RCode.PRO_NOT_QC_STORE_CLOCK_DISTANCE, null);
}
Long distance = JSONObject.parseArray(rData).getJSONObject(0).getLong("distance");
log.info("[打卡] 判断打卡距离,勤策-id:{},打卡距离:{},打卡经纬度:{}", storeQcId, distance, clockCoordinates);
// 判断打卡距离
if (distance > 100L) {
throw new ParamException(RCode.PRO_FAR_QC_STORE_CLOCK_DISTANCE, null);
}
}
/**
* 促销员上班打卡图片保存
*/
private void saveClockPhoto(TemporaryClockDto dto, Integer clockType) {
// 上班卡、午休下班卡、午休上班卡、下班卡
if (ClockType.TEMPORARY_CLOCK_IN.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.CLOCK_IN.getType(), dto.getClockInPhoto());
} else if (ClockType.TEMPORARY_NOON_CLOCK_OUT.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.NOON_CLOCK_OUT.getType(), dto.getNoonClockOutPhoto());
} else if (ClockType.TEMPORARY_NOON_CLOCK_IN.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.NOON_CLOCK_IN.getType(), dto.getNoonClockInPhoto());
} else if (ClockType.TEMPORARY_CLOCK_OUT.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.CLOCK_OUT.getType(), dto.getClockOutPhoto());
}
}
}
...@@ -7,26 +7,19 @@ import com.fasterxml.uuid.Generators; ...@@ -7,26 +7,19 @@ import com.fasterxml.uuid.Generators;
import com.wangxiaolu.promotion.common.redis.RedisKeys; import com.wangxiaolu.promotion.common.redis.RedisKeys;
import com.wangxiaolu.promotion.common.redis.service.RedisCache; import com.wangxiaolu.promotion.common.redis.service.RedisCache;
import com.wangxiaolu.promotion.domain.activity.dao.*; import com.wangxiaolu.promotion.domain.activity.dao.*;
import com.wangxiaolu.promotion.domain.user.dao.QinCeClienteleStoreDao;
import com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao; import com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao;
import com.wangxiaolu.promotion.domain.user.wrapperQo.StoreWrapper;
import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType; import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType;
import com.wangxiaolu.promotion.enums.activity.ClockType;
import com.wangxiaolu.promotion.enums.activity.LogType; import com.wangxiaolu.promotion.enums.activity.LogType;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus; import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import com.wangxiaolu.promotion.exception.DataException;
import com.wangxiaolu.promotion.exception.FlowException; import com.wangxiaolu.promotion.exception.FlowException;
import com.wangxiaolu.promotion.exception.ParamException; import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityMarketCellDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityMarketCellDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityMarketCellVo; import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityMarketCellVo;
import com.wangxiaolu.promotion.pojo.user.dto.QinCeClienteleStoreDto;
import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto; import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto;
import com.wangxiaolu.promotion.result.basedata.RCode; import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService; import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService;
import com.wangxiaolu.promotion.utils.OkHttp;
import com.wangxiaolu.promotion.utils.QinCeUtils; import com.wangxiaolu.promotion.utils.QinCeUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -35,7 +28,9 @@ import org.springframework.stereotype.Service; ...@@ -35,7 +28,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -52,19 +47,12 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -52,19 +47,12 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
RedisCache redisCache; RedisCache redisCache;
@Autowired @Autowired
private TemporaryActivityReportedDao temporaryActivityReportedDao; private TemporaryActivityReportedDao temporaryActivityReportedDao;
@Autowired
private TemporaryActivityClockDao temporaryActivityClockDao;
@Autowired @Autowired
private PromotionStoreDao promotionStoreDao; private PromotionStoreDao promotionStoreDao;
@Autowired @Autowired
private TemporaryActivityPhotoDao tempActivityPhotoDao; private TemporaryActivityPhotoDao tempActivityPhotoDao;
@Autowired @Autowired
private TemporaryActivityLogDao tempActivityLogDao; private TemporaryActivityLogDao tempActivityLogDao;
@Autowired @Autowired
private TemporaryInfoDao temporaryInfoDao; private TemporaryInfoDao temporaryInfoDao;
@Autowired @Autowired
...@@ -85,13 +73,9 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -85,13 +73,9 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
throw new FlowException(RCode.DATA_HAVE_ERROR, null); throw new FlowException(RCode.DATA_HAVE_ERROR, null);
} }
// 查询上报人负责人;初始化任务状态:已保存 /**
WxTemporaryInfoDto wxTemporaryInfoDto = temporaryInfoDao.selectOneById(temActDto.getTemporaryId()); * 根据storeId查询店铺信息,进行店铺信息补充
temActDto.setApproveStatus(TemActApproveStatus.SUBMITTED); */
temActDto.setApproverId(wxTemporaryInfoDto.getChargerQcId());
temActDto.setApproveName(wxTemporaryInfoDto.getChargerName());
// 根据storeQcId查询店铺信息,进行店铺信息补充
PromotionStoreDto promotionStoreDto = promotionStoreDao.selectOneById(temActDto.getStoreId()); PromotionStoreDto promotionStoreDto = promotionStoreDao.selectOneById(temActDto.getStoreId());
temActDto.setStoreName(promotionStoreDto.getStoreName()) temActDto.setStoreName(promotionStoreDto.getStoreName())
.setStoreAddr(promotionStoreDto.getAddress()) .setStoreAddr(promotionStoreDto.getAddress())
...@@ -104,11 +88,15 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -104,11 +88,15 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
// 保存图片 // 保存图片
saveActivityPhoto(temActDto); saveActivityPhoto(temActDto);
// 售卖单元新增保存 /**
* 售卖单元新增保存
*/
String key = temMarketCellRedisKey(temActDto.getTemporaryId()); String key = temMarketCellRedisKey(temActDto.getTemporaryId());
temporaryActivityMarketCellDao.saveList(reportedId,redisCache.getToJsonArray(key)); temporaryActivityMarketCellDao.saveList(reportedId,redisCache.getToJsonArray(key));
// 日志保存 /**
* 日志保存
*/
tempActivityLogDao.save(temActDto.getTemporaryId(), temActDto.getTemporaryName(), LogType.t_2, temActDto.getId(), temActDto); tempActivityLogDao.save(temActDto.getTemporaryId(), temActDto.getTemporaryName(), LogType.t_2, temActDto.getId(), temActDto);
redisCache.removeKey(key); redisCache.removeKey(key);
...@@ -135,24 +123,6 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -135,24 +123,6 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
tempActivityLogDao.save(temActDto.getTemporaryId(), temActDto.getTemporaryName(), LogType.t_2, temActDto.getId(), temActDto); tempActivityLogDao.save(temActDto.getTemporaryId(), temActDto.getTemporaryName(), LogType.t_2, temActDto.getId(), temActDto);
} }
/**
* 促销员当日打卡信息保存
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void clockInTodayActivity(TemporaryClockDto dto, Integer clockType) {
log.info("促销员当日打卡[type-{}]信息保存:{}", clockType, dto.toString());
if (Objects.isNull(dto.getId())) {
temporaryActivityClockDao.save(dto);
} else {
temporaryActivityClockDao.updateById(dto);
}
// 根据ID保存图片
saveClockPhoto(dto, clockType);
// 日志保存
tempActivityLogDao.save(dto.getTemporaryId(), dto.getTemporaryName(), LogType.t_1, dto.getId(), dto);
}
/** /**
* 修改审批状态 * 修改审批状态
* *
...@@ -277,44 +247,6 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -277,44 +247,6 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
} }
} }
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
* 经度,范围为 -180~180,负数表示西经;纬度,范围为 -90~90,负数表示南纬
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
@Override
public void clockStoreCalDistance(String storeQcId, Long id, String clockCoordinates) {
// if (Objects.nonNull(id)) {
// TemporaryClockDto clockDto = temporaryActivityClockDao.selectOne(new TemporaryClockWrapper().setId(id));
// storeQcId = clockDto.getStoreQcId();
// }
// clockStoreCalDistanceByStoreQcId(storeQcId, clockCoordinates);
}
private void clockStoreCalDistanceByStoreQcId(String storeQcId, String clockCoordinates) {
// 查询组织架构参数、创建url
String[] clockCoordinateArr = clockCoordinates.split(",");
List<Map> paramList = qinCeUtils.queryCalDistanceParam(storeQcId, clockCoordinateArr[0], clockCoordinateArr[1]);
String url = qinCeUtils.builderUrlList(QinCeUtils.CAL_DISTANCE, paramList);
// 发起请求、接收结果
JSONObject resultJson = OkHttp.postQC(url, paramList);
String rData = resultJson.getString("response_data");
if (StringUtils.isBlank(rData) || !rData.contains(storeQcId)) {
throw new ParamException(RCode.PRO_NOT_QC_STORE_CLOCK_DISTANCE, null);
}
Long distance = JSONObject.parseArray(rData).getJSONObject(0).getLong("distance");
log.info("[打卡] 判断打卡距离,勤策-id:{},打卡距离:{},打卡经纬度:{}", storeQcId, distance, clockCoordinates);
// todo 判断打卡距离
// if (distance > 100L) {
// throw new ParamException(RCode.PRO_FAR_QC_STORE_CLOCK_DISTANCE, null);
// }
}
private String temMarketCellRedisKey(Integer temporaryId) { private String temMarketCellRedisKey(Integer temporaryId) {
return RedisKeys.TemporaryKeys.TEMPORARY_ACTIVITY_MARKET_CELL.getKey() + temporaryId + "_" + DateUtil.today(); return RedisKeys.TemporaryKeys.TEMPORARY_ACTIVITY_MARKET_CELL.getKey() + temporaryId + "_" + DateUtil.today();
} }
...@@ -347,20 +279,4 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -347,20 +279,4 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
} }
log.info("促销员今日活动上报-图片保存成功,关联活动上报数据id[{}],数据信息:{}", temActDto.getId(), temActDto); log.info("促销员今日活动上报-图片保存成功,关联活动上报数据id[{}],数据信息:{}", temActDto.getId(), temActDto);
} }
/**
* 促销员上班打卡图片保存
*/
private void saveClockPhoto(TemporaryClockDto dto, Integer clockType) {
// 上班卡、午休下班卡、午休上班卡、下班卡
if (ClockType.TEMPORARY_CLOCK_IN.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.CLOCK_IN.getType(), dto.getClockInPhoto());
} else if (ClockType.TEMPORARY_NOON_CLOCK_OUT.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.NOON_CLOCK_OUT.getType(), dto.getNoonClockOutPhoto());
} else if (ClockType.TEMPORARY_NOON_CLOCK_IN.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.NOON_CLOCK_IN.getType(), dto.getNoonClockInPhoto());
} else if (ClockType.TEMPORARY_CLOCK_OUT.equals(clockType)) {
tempActivityPhotoDao.saveClockPhoto(dto.getTemporaryId(), dto.getId(), ActivityPhotoType.CLOCK_OUT.getType(), dto.getClockOutPhoto());
}
}
} }
...@@ -24,6 +24,6 @@ class TemporaryActivityCoreServiceImplTest { ...@@ -24,6 +24,6 @@ class TemporaryActivityCoreServiceImplTest {
@Test @Test
void clockStoreCalDistance() { void clockStoreCalDistance() {
temporaryActivityCoreService.clockStoreCalDistance("7552853602498153022",null,"116.608403,40.113349"); // temporaryActivityCoreService.clockStoreCalDistance("7552853602498153022",null,"116.608403,40.113349");
} }
} }
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论