Commit e6ab01c2 e6ab01c21a910367af4fbff3bae1c3a4edc28299 by xianghan@topdraw.cn

1.添加任务模板参数功能

1 parent b8c77c5e
......@@ -49,7 +49,7 @@ public class DataSyncMsg implements Serializable {
private Long activityId;
private Long mediaId;
private Long itemId;
private String param;
}
......
......@@ -11,14 +11,17 @@ import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.exception.BadRequestException;
import com.topdraw.util.Base64Util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.util.Base64;
import java.util.Objects;
/**
......@@ -57,6 +60,15 @@ public class MemberRelatedInfoController {
@ApiOperation("修改MemberRelatedInfo")
@AnonymousAccess
public ResultInfo update(@Validated(value = {UpdateGroup.class}) @RequestBody MemberRelatedInfo resources) {
log.info("Param ===> resources ===> [{}]",resources);
String name = resources.getName();
if (StringUtils.hasText(name)) {
String nickNameEncode = Base64Util.encode(name);
resources.setName(nickNameEncode);
}
Long id = resources.getId();
MemberRelatedInfoDTO memberRelatedInfoDTO = this.MemberRelatedInfoService.findById(id);
if (memberRelatedInfoDTO.getId() != null) {
......
package com.topdraw.business.process.domian;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TempCustomPointBean extends TempIptvUser {
/** 设备类型 1:大屏;2:小屏(微信)3.小屏(xx) */
@Transient
@NotNull(message = "设备类型不得为空")
protected Integer deviceType;
/** 订单id */
@Transient
protected Long orderId;
/** 节目id(针对观影操作) */
@Transient
protected Long mediaId;
/** 活动id(针对参与活动) */
@Transient
protected Long activityId;
/** 商品id */
@Transient
protected Long itemId;
/** 行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;11:积分转移;98:系统操作;99:其他 */
@Transient
protected Integer evtType;
}
......@@ -12,7 +12,7 @@ import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.TempIptvUser;
import com.topdraw.business.process.domian.TempCustomPointBean;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.domian.result.CustomPointsResult;
import com.topdraw.business.process.service.PointsOperationService;
......@@ -38,7 +38,7 @@ import java.util.Objects;
*/
@Api(tags = "PointsOperation管理")
@RestController
@RequestMapping("/api/pointsOperation")
@RequestMapping("/ucEngine/api/pointsOperation")
public class PointsOperationController {
private static final Logger LOG = LoggerFactory.getLogger(PointsOperationController.class);
......@@ -108,9 +108,15 @@ public class PointsOperationController {
@Log
@PostMapping(value = "/customPointsByUserTvPlatformAccount")
@ApiOperation("通过大屏账户积分消耗")
public ResultInfo customPointsByUserTvPlatformAccount(@Validated @RequestBody TempIptvUser tempIptvUser) {
public ResultInfo customPointsByUserTvPlatformAccount(@Validated @RequestBody TempCustomPointBean tempIptvUser) {
String platformAccount = tempIptvUser.getPlatformAccount();
Long points = tempIptvUser.getPoints();
Long activityId = tempIptvUser.getActivityId();
Integer evtType = tempIptvUser.getEvtType();
Long mediaId = tempIptvUser.getMediaId();
Long orderId = tempIptvUser.getOrderId();
Integer deviceType = tempIptvUser.getDeviceType();
TempPoints tempPoints = new TempPoints();
UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
......@@ -124,9 +130,12 @@ public class PointsOperationController {
tempPoints.setMemberId(memberId);
}
tempPoints.setPoints(points);
tempPoints.setDeviceType(LocalConstants.DEVICE_VIS);
tempPoints.setDeviceType(deviceType);
tempPoints.setAppCode(LocalConstants.APP_CODE_CHONGQING_CHONGSHU_VIS);
tempPoints.setEvtType(LocalConstants.EVT_TYPE_ACTIVITY);
tempPoints.setEvtType(evtType);
tempPoints.setActivityId(activityId);
tempPoints.setMediaId(mediaId);
tempPoints.setOrderId(orderId);
return this.customPoints(tempPoints);
}
......
package com.topdraw.business.process.rest;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.annotation.Log;
import com.topdraw.business.process.domian.TempIptvUser;
import com.topdraw.business.process.service.TaskOperationService;
......@@ -14,7 +15,7 @@ import java.util.Arrays;
@Api("任务处理")
@RestController
@RequestMapping(value = "/api/TaskOperation")
@RequestMapping(value = "/ucEngine/api/taskOperation")
public class TaskOperationController {
@Autowired
......@@ -28,6 +29,7 @@ public class TaskOperationController {
@Log
@PostMapping(value = "/dealTask")
@ApiOperation("事件处理")
@AnonymousAccess
public void dealTask(@RequestBody @Validated TaskOperationQueryCriteria criteria) {
// 任务处理
this.taskOperationService.dealTask(criteria.getContent());
......
package com.topdraw.business.process.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.module.coupon.service.CouponService;
import com.topdraw.business.module.coupon.service.dto.CouponDTO;
......@@ -91,7 +92,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
@Override
public ResultInfo dealTask(String content) {
DataSyncMsg dataSyncMsg = JSONUtil.parseMsg2Object(content, DataSyncMsg.class);
DataSyncMsg dataSyncMsg = JSONUtil.parseMsg2Object(content, DataSyncMsg.class);
DataSyncMsg.MsgData msgData = dataSyncMsg.getMsg();
Integer event = msgData.getEvent();
Long memberId = msgData.getMemberId();
......@@ -107,16 +108,15 @@ public class TaskOperationServiceImpl implements TaskOperationService {
// 2.通过任务模板获取对应的任务列表
List<Task> taskList = this.loadListTaskByTaskTemplate(taskTemplate,dataSyncMsg);
// 4.判断当前用户是否满足任务完成条件
boolean checkResult = this.checkTaskCompletion(memberId,taskList);
/*boolean checkResult = this.checkTaskCompletion(memberId,taskList);
if (checkResult) {
// 5.权益区分(积分、权益、成长值)
Map<RightType,Object> tempRightsMap = this.distinguishRight(memberId,taskList,msgData);
// 6.权益发放
this.grantRight(tempRightsMap);
}
}*/
System.out.println(taskList);
return ResultInfo.success();
}
......@@ -772,16 +772,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
List<Task> taskList = this.taskService.findByTemplateId(taskTemplateId);
Integer type = taskTemplate.getType();
switch (type) {
// 订购
case TaskTemplateType.TYPE_4:
taskList = this.pickUpTask(taskList,dataSyncMsg);
break;
default:
break;
}
taskList = this.pickUpTask(taskList,dataSyncMsg,type);
return taskList;
}
......@@ -795,29 +786,57 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @param dataSyncMsg
* @return
*/
private List<Task> pickUpTask(List<Task> taskList,DataSyncMsg dataSyncMsg) {
private List<Task> pickUpTask(List<Task> taskList,DataSyncMsg dataSyncMsg,Integer type) {
List<Task> taskList1 = new ArrayList<>();
DataSyncMsg.TaskTemplateParam param = dataSyncMsg.getParam();
DataSyncMsg.MsgData msgData = dataSyncMsg.getMsg();
if (Objects.nonNull(msgData)) {
if (Objects.nonNull(param)) {
String param = msgData.getParam();
Map<String,String> jsonObjectMap = JSONObject.parseObject(param,Map.class);
Collection<String> values = jsonObjectMap.values();
String code = param.getCode();
for (Task task : taskList) {
Long taskId = task.getId();
TaskAttrDTO taskAttrDTO = this.findTaskAttrByTaskId(taskId);
if (Objects.isNull(taskAttrDTO.getId()))
continue;
String attrStr = taskAttrDTO.getAttrStr();
if (StringUtils.hasText(attrStr)) {
DataSyncMsg.TaskTemplateParam taskTemplateParam = JSONObject.parseObject(attrStr, DataSyncMsg.TaskTemplateParam.class);
if (Objects.nonNull(taskTemplateParam)) {
String code1 = taskTemplateParam.getCode();
if (StringUtils.hasText(code1) && code.equalsIgnoreCase(code1)) {
taskList1.add(task);
}
JSONObject jsonObject = JSONObject.parseObject(attrStr);
JSONArray values_0 = jsonObject.getJSONArray("value");
switch (type) {
// 登录
case TaskTemplateType.TYPE_1:
Integer o1 = (Integer)values_0.get(0);
Integer o2 = (Integer)values_0.get(1);
List<Integer> list = Arrays.asList(o1, o2);
String s = values.toArray()[0].toString();
Integer i = Integer.valueOf(s);
boolean b = UcListUtils.compareIntegerList(i, list);
if (b)
taskList1.add(task);
break;
// 订购
case TaskTemplateType.TYPE_4:
if (values_0.containsAll(values))
taskList1.add(task);
break;
default:
break;
}
}
}
} else {
......@@ -855,11 +874,11 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @return TaskTemplate 任务模板
*/
private TaskTemplate getTaskTemplate(Integer event,DataSyncMsg msgData) {
DataSyncMsg.TaskTemplateParam taskTemplateParam = msgData.getParam();
DataSyncMsg.MsgData msg = msgData.getMsg();
if (Objects.nonNull(taskTemplateParam)) {
if (Objects.nonNull(msg)) {
return this.findByTypeAndParam(event,taskTemplateParam);
return this.findByTypeAndParam(event,msg);
} else {
......@@ -878,28 +897,31 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
}
private TaskTemplate findByTypeAndParam(Integer event, DataSyncMsg.TaskTemplateParam taskTemplateParam) {
String category = taskTemplateParam.getCategory();
List<TaskTemplate> taskTemplateList = this.taskTemplateService.findByType(event);
if (!CollectionUtils.isEmpty(taskTemplateList)) {
private TaskTemplate findByTypeAndParam(Integer event, DataSyncMsg.MsgData taskTemplateParam) {
String param = taskTemplateParam.getParam();
if (StringUtils.hasText(param)) {
for (TaskTemplate taskTemplate : taskTemplateList) {
Map<String,String> jsonObject = JSONObject.parseObject(param,Map.class);
String params = taskTemplate.getParams();
if(!StringUtils.isEmpty(params)) {
List<TaskTemplate> taskTemplateList = this.taskTemplateService.findByType(event);
if (!CollectionUtils.isEmpty(taskTemplateList)) {
DataSyncMsg.TaskTemplateParam taskTemplateParam1 = JSONObject.parseObject(params,DataSyncMsg.TaskTemplateParam.class);
String category1 = taskTemplateParam1.getCategory();
if (!StringUtils.isEmpty(category1) && category1.equalsIgnoreCase(category))
return taskTemplate;
for (TaskTemplate taskTemplate : taskTemplateList) {
}
String templateParams = taskTemplate.getParams();
if(StringUtils.hasText(templateParams)) {
String templateParamsUpperCase = templateParams.toUpperCase();
boolean b = jsonObject.containsKey(templateParamsUpperCase);
if (b)
return taskTemplate;
}
}
}
}
return null;
}
......
package com.topdraw.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class UcListUtils {
public static boolean compareIntegerList(Integer obj , List<Integer> originList){
Integer o = originList.get(0);
Integer o1 = originList.get(1);
if (o >= 0 && o1 > o && obj >= o && obj <= o1)
return true;
if (o > 0 && o1 < 0 && obj >= o)
return true;
return false;
}
public static void main(String[] args) {
String param = "{CONTINUE_LOGIN:30}";
Map<String,String> jsonObjectMap = JSONObject.parseObject(param,Map.class);
Collection<String> values = jsonObjectMap.values();
Object o = values.toArray()[0];
String attrStr = "{\"value\":[31,-99]}";
JSONObject jsonObject = JSONObject.parseObject(attrStr);
JSONArray values_0 = jsonObject.getJSONArray("value");
Integer o1 = (Integer)values_0.get(0);
Integer o2 = (Integer)values_0.get(1);
List<Integer> list = Arrays.asList(o1, o2);
Integer i = (Integer) o;
boolean b = compareIntegerList(i, list);
System.out.println(b);
}
}
......@@ -10,6 +10,9 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest(classes= MemberServiceApplication.class)
@RunWith(SpringRunner.class)
......@@ -26,9 +29,23 @@ public class BaseTest {
}
public static void main(String[] args) {
String param = "{\"category\":\"common_member\"}";
DataSyncMsg.TaskTemplateParam taskTemplateParam = JSONObject.parseObject(param, DataSyncMsg.TaskTemplateParam.class);
System.out.println(taskTemplateParam);
/* Map<String,Integer> map = new HashMap<>();
map.put("1",1);
map.put("2",15);
int i = 5;
Object[] objects = map.values().toArray();
Integer object0 = (Integer) objects[0];
Integer object1 = (Integer) objects[1];
if (i > object0 && i < object1)
System.out.println(true);*/
String param = "{\"GOODS\":\"aabbccddeeff\"}";
Map<String,String> jsonObject = JSONObject.parseObject(param,Map.class);
System.out.println(jsonObject);
}
......