Commit 3d73fa9d by 郑永强

Merge branch 'master' into zhengyongqiang

parents 2ce4cc2b 9d807954
...@@ -553,6 +553,7 @@ public class BookDto extends BaseDto { ...@@ -553,6 +553,7 @@ public class BookDto extends BaseDto {
*/ */
private BigDecimal outRate; private BigDecimal outRate;
public String getQrRemark() { public String getQrRemark() {
return qrRemark; return qrRemark;
} }
......
...@@ -24,5 +24,9 @@ public interface BookClockInfoService { ...@@ -24,5 +24,9 @@ public interface BookClockInfoService {
@PostMapping("/sendBookClockGroupMessage") @PostMapping("/sendBookClockGroupMessage")
void sendBookClockGroupMessage(@RequestBody Map<String, Object> map) throws BizException; void sendBookClockGroupMessage(@RequestBody Map<String, Object> map) throws BizException;
@ApiOperation(value = "处理关联应用的打卡的旧数据", httpMethod = "GET")
@RequestMapping(value = "/dealOldData4WeixinClock", method = RequestMethod.GET)
void dealOldData4WeixinClock();
} }
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 16:07
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BookClassifyDTO implements Serializable {
private Long bookId;
private Long bookGroupId;
private Long classifyCount;
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Long classifyCount) {
this.classifyCount = classifyCount;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
@Override
public String toString() {
return "BookClassifyDTO{" +
"bookId=" + bookId +
", bookGroupId=" + bookGroupId +
", classifyCount=" + classifyCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 16:29
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BookGroupStatisticsDTO implements Serializable {
/**
* 群分类数
*/
private Long classifyCount;
/**
* 微信群数
*/
private Long wxGroupCount;
/**
* 当前群人数
*/
private Long groupPersonNum;
/**
* 推广应用次数
*/
private Long promAppCount;
/**
* 推广作品次数
*/
private Long promProductCount;
public Long getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Long classifyCount) {
this.classifyCount = classifyCount;
}
public Long getWxGroupCount() {
return wxGroupCount;
}
public void setWxGroupCount(Long wxGroupCount) {
this.wxGroupCount = wxGroupCount;
}
public Long getGroupPersonNum() {
return groupPersonNum;
}
public void setGroupPersonNum(Long groupPersonNum) {
this.groupPersonNum = groupPersonNum;
}
public Long getPromAppCount() {
return promAppCount;
}
public void setPromAppCount(Long promAppCount) {
this.promAppCount = promAppCount;
}
public Long getPromProductCount() {
return promProductCount;
}
public void setPromProductCount(Long promProductCount) {
this.promProductCount = promProductCount;
}
@Override
public String toString() {
return "BookGroupStatisticsDTO{" +
"classifyCount=" + classifyCount +
", wxGroupCount=" + wxGroupCount +
", groupPersonNum=" + groupPersonNum +
", promAppCount=" + promAppCount +
", promProductCount=" + promProductCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import java.io.Serializable;
import java.util.List;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/8 20:37
*/
public class ResourceBrowseParamDto implements Serializable {
private Long bookGroupId;
private Long classifyId;
private Long qrcodeId;
private String typeCode;
private List<Long> Ids;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public List<Long> getIds() {
return Ids;
}
public void setIds(List<Long> ids) {
Ids = ids;
}
@Override
public String toString() {
return "ResourceBrowseParamDto{" +
"bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", qrcodeId=" + qrcodeId +
", typeCode='" + typeCode + '\'' +
", Ids=" + Ids +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.service; package com.pcloud.book.group.service;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
...@@ -32,6 +29,11 @@ public interface BookGroupClassifyService { ...@@ -32,6 +29,11 @@ public interface BookGroupClassifyService {
@GetMapping("getClassifyQrcodeInfo") @GetMapping("getClassifyQrcodeInfo")
ResponseEntity<ResponseDto<GroupClassifyQrcodeDTO>> getClassifyQrcodeInfo(@RequestParam("weixinGroupId") String weixinGroupId); ResponseEntity<ResponseDto<GroupClassifyQrcodeDTO>> getClassifyQrcodeInfo(@RequestParam("weixinGroupId") String weixinGroupId);
@ApiOperation("根据id获取微信群分类")
@PostMapping("getClassifyByIds")
ResponseEntity<ResponseDto<Map<Long, String>>> getClassifyByIds(@RequestBody List<Long> weixinGroupClassifyPrimaryIds);
@ApiOperation("根据微信群标识获取相关id") @ApiOperation("根据微信群标识获取相关id")
@PostMapping("listGroupQrcodeBaseInfo") @PostMapping("listGroupQrcodeBaseInfo")
ResponseEntity<ResponseDto<Map<String, GroupQrcodeBaseDTO>>> listGroupQrcodeBaseInfo(@RequestBody List<String> weixinGroupIds); ResponseEntity<ResponseDto<Map<String, GroupQrcodeBaseDTO>>> listGroupQrcodeBaseInfo(@RequestBody List<String> weixinGroupIds);
...@@ -56,7 +58,13 @@ public interface BookGroupClassifyService { ...@@ -56,7 +58,13 @@ public interface BookGroupClassifyService {
@PostMapping("filterDeleteId") @PostMapping("filterDeleteId")
ResponseEntity<ResponseDto<List<Long>>> filterDeleteId(@RequestBody List<String >wxGroupIdList); ResponseEntity<ResponseDto<List<Long>>> filterDeleteId(@RequestBody List<String >wxGroupIdList);
@ApiOperation("获取用户支付金额") @ApiOperation("获取用户支付金额")
@GetMapping("getPayPrice") @GetMapping("getPayPrice")
ResponseEntity<ResponseDto<BigDecimal>> getPayPrice(@RequestParam("qrcodeId") Long qrcodeId, @RequestParam("wxUserId") String wxUserId); ResponseEntity<ResponseDto<BigDecimal>> getPayPrice(@RequestParam("qrcodeId") Long qrcodeId, @RequestParam("wxUserId") String wxUserId);
@ApiOperation("获取群分类个数")
@PostMapping("getGroupClassifyCount")
ResponseEntity<ResponseDto<Map<Long, BookClassifyDTO>>> getGroupClassifyCount(@RequestBody List<Long> bookIds);
} }
...@@ -3,9 +3,12 @@ package com.pcloud.book.group.service; ...@@ -3,9 +3,12 @@ package com.pcloud.book.group.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO; import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO; import com.pcloud.book.group.dto.GroupCipherDTO;
import com.pcloud.book.group.dto.GroupUseDTO; import com.pcloud.book.group.dto.GroupUseDTO;
import com.pcloud.book.group.dto.ResourceBrowseParamDto;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -52,6 +55,7 @@ public interface BookGroupService { ...@@ -52,6 +55,7 @@ public interface BookGroupService {
@RequestMapping(value = "getBaseInfoBySceneId",method = RequestMethod.GET) @RequestMapping(value = "getBaseInfoBySceneId",method = RequestMethod.GET)
ResponseEntity<ResponseDto<BookGroupDTO>> getBaseInfoBySceneId(@RequestParam("sceneId")Long sceneId) throws BizException; ResponseEntity<ResponseDto<BookGroupDTO>> getBaseInfoBySceneId(@RequestParam("sceneId")Long sceneId) throws BizException;
@ApiOperation("更新个人二维码") @ApiOperation("更新个人二维码")
@RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST) @RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST)
void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException; void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException;
...@@ -72,4 +76,9 @@ public interface BookGroupService { ...@@ -72,4 +76,9 @@ public interface BookGroupService {
@GetMapping("/getJoinGroupCipher") @GetMapping("/getJoinGroupCipher")
ResponseEntity<ResponseDto<GroupCipherDTO>> getJoinGroupCipher(@RequestParam("cipher")String cipher) throws BizException; ResponseEntity<ResponseDto<GroupCipherDTO>> getJoinGroupCipher(@RequestParam("cipher")String cipher) throws BizException;
@ApiOperation("获取资源浏览数据")
@PostMapping("getResourcesBrowseCount")
ResponseEntity<ResponseDto<Map<Long, Long>>> getResourcesBrowseCount(@RequestBody ResourceBrowseParamDto resourceBrowseParamDto);
} }
...@@ -83,6 +83,10 @@ public interface WeixinQrcodeService { ...@@ -83,6 +83,10 @@ public interface WeixinQrcodeService {
@RequestMapping(value = "getGroupVersionIp", method = RequestMethod.POST) @RequestMapping(value = "getGroupVersionIp", method = RequestMethod.POST)
ResponseEntity<ResponseDto<Map<String, BookWxQrcodeDTO>>> getGroupVersionIp(@RequestBody List<String> wxGroupIds); ResponseEntity<ResponseDto<Map<String, BookWxQrcodeDTO>>> getGroupVersionIp(@RequestBody List<String> wxGroupIds);
@ApiOperation(value = "通过群分类id获取微信群id", httpMethod = "GET")
@RequestMapping(value = "getWxGroupId", method = RequestMethod.GET)
ResponseEntity<ResponseDto<String>> getWxGroupId(@RequestParam("classifyId") Long classifyId);
} }
...@@ -211,4 +211,14 @@ public class BookApplication { ...@@ -211,4 +211,14 @@ public class BookApplication {
public Binding wxGroupAgreeAddUserBind() { public Binding wxGroupAgreeAddUserBind() {
return RabbitMQFactory.bindingExchange(wxGroupAgreeAddUserQueue(), MQTopicProducer.WX_AGREE_ADD_USER); return RabbitMQFactory.bindingExchange(wxGroupAgreeAddUserQueue(), MQTopicProducer.WX_AGREE_ADD_USER);
} }
@Bean
public Queue wxGroupUserBindQueue(){
return RabbitMQFactory.queueBuilder(MQTopicConumer.CONSUMER_WXGROUP_USER_BIND);
}
@Bean
public Binding wxGroupUserBindBind(){
return RabbitMQFactory.bindingExchange(wxGroupUserBindQueue(), MQTopicProducer.WXGROUP_USER_BIND);
}
} }
...@@ -67,4 +67,8 @@ public interface BookClockBiz { ...@@ -67,4 +67,8 @@ public interface BookClockBiz {
*/ */
void deleteBookGroupClock(Long bookClockInfoId,Long adviserId); void deleteBookGroupClock(Long bookClockInfoId,Long adviserId);
/**
* 处理关联应用的打卡的旧数据
*/
void dealOldData4WeixinClock();
} }
...@@ -28,6 +28,8 @@ import com.pcloud.book.group.dao.WeixinQrcodeDao; ...@@ -28,6 +28,8 @@ import com.pcloud.book.group.dao.WeixinQrcodeDao;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookWxQrcodeDTO; import com.pcloud.book.group.dto.BookWxQrcodeDTO;
import com.pcloud.book.group.dto.ClassifyDTO; import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.weixinclock.biz.WeixinClockBiz;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
...@@ -48,6 +50,8 @@ import java.util.ArrayList; ...@@ -48,6 +50,8 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -84,6 +88,8 @@ public class BookClockBizImpl implements BookClockBiz { ...@@ -84,6 +88,8 @@ public class BookClockBizImpl implements BookClockBiz {
private ScheduleService scheduleService; private ScheduleService scheduleService;
@Autowired @Autowired
private WeixinQrcodeDao weixinQrcodeDao; private WeixinQrcodeDao weixinQrcodeDao;
@Autowired
private WeixinClockBiz weixinClockBiz;
/** /**
...@@ -416,4 +422,30 @@ public class BookClockBizImpl implements BookClockBiz { ...@@ -416,4 +422,30 @@ public class BookClockBizImpl implements BookClockBiz {
throw new BookBizException(BookBizException.ERROR,"删除定时任务失败!"); throw new BookBizException(BookBizException.ERROR,"删除定时任务失败!");
} }
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void dealOldData4WeixinClock() {
new Thread(() -> {
WeixinClockDto weixinClockDto = new WeixinClockDto();
weixinClockDto.setClockGuide("每日打卡,养成良好习惯");
weixinClockDto.setClockIntroduction("欢迎加入打卡,每天一次,养成良好习惯");
weixinClockDto.setClockKeyword("每日打卡");
List<BookClockInfoDTO> clockInfoIds = bookClockInfoDao.getAllClockInfoIds();
if(!ListUtils.isEmpty(clockInfoIds)){
for(BookClockInfoDTO bookClockInfoDTO: clockInfoIds){
List<Long> list1 = bookGroupClockDao.getClassifyIdsByBookGroupId(bookClockInfoDTO.getBookClockInfoId());
List<Long> list2 = bookGroupClockDao.getClassifyIdsByClassfyId(bookClockInfoDTO.getBookClockInfoId());
list1.addAll(list2);
List<Long> resultList = list1.stream().distinct().collect(Collectors.toList());
if(!ListUtils.isEmpty(resultList)) {
weixinClockDto.setCreateUser(bookClockInfoDTO.getCreateUser());
weixinClockDto.setLastModifiedUser(bookClockInfoDTO.getCreateUser());
weixinClockDto.setGroupClassifyIds(resultList);
weixinClockBiz.createWeixinClock(weixinClockDto);
}
}
}
}).start();
}
} }
...@@ -86,4 +86,6 @@ public interface BookClockInfoDao extends BaseDao<BookClockInfo> { ...@@ -86,4 +86,6 @@ public interface BookClockInfoDao extends BaseDao<BookClockInfo> {
* @param paramMap * @param paramMap
*/ */
void deleteBookClockInfo(Map<String, Object> paramMap); void deleteBookClockInfo(Map<String, Object> paramMap);
List<BookClockInfoDTO> getAllClockInfoIds();
} }
...@@ -70,4 +70,8 @@ public interface BookGroupClockDao extends BaseDao<BookGroupClock> { ...@@ -70,4 +70,8 @@ public interface BookGroupClockDao extends BaseDao<BookGroupClock> {
* @param paramMap * @param paramMap
*/ */
void deleteBookGroupClock(Map<String,Object> paramMap); void deleteBookGroupClock(Map<String,Object> paramMap);
List<Long> getClassifyIdsByBookGroupId(Long bookClockInfoId);
List<Long> getClassifyIdsByClassfyId(Long bookClockInfoId);
} }
...@@ -135,5 +135,11 @@ public class BookClockInfoDaoImpl extends BaseDaoImpl<BookClockInfo> implements ...@@ -135,5 +135,11 @@ public class BookClockInfoDaoImpl extends BaseDaoImpl<BookClockInfo> implements
super.sqlSessionTemplate.delete(getStatement("deleteBookClockInfo"),paramMap); super.sqlSessionTemplate.delete(getStatement("deleteBookClockInfo"),paramMap);
} }
@Override
public List<BookClockInfoDTO> getAllClockInfoIds() {
Map<String,Object> paramMap = new HashMap<>();
return super.sqlSessionTemplate.selectList(getStatement("getAllClockInfoIds"),paramMap);
}
} }
...@@ -6,6 +6,7 @@ import com.pcloud.book.clock.entity.BookGroupClock; ...@@ -6,6 +6,7 @@ import com.pcloud.book.clock.entity.BookGroupClock;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -100,4 +101,18 @@ public class BookGroupClockDaoImpl extends BaseDaoImpl<BookGroupClock> implement ...@@ -100,4 +101,18 @@ public class BookGroupClockDaoImpl extends BaseDaoImpl<BookGroupClock> implement
public void deleteBookGroupClock(Map<String, Object> paramMap) { public void deleteBookGroupClock(Map<String, Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("deleteBookGroupClock"),paramMap); super.sqlSessionTemplate.delete(getStatement("deleteBookGroupClock"),paramMap);
} }
@Override
public List<Long> getClassifyIdsByBookGroupId(Long bookClockInfoId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
return super.sqlSessionTemplate.selectList(getStatement("getClassifyIdsByBookGroupId"),paramMap);
}
@Override
public List<Long> getClassifyIdsByClassfyId(Long bookClockInfoId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("bookClockInfoId",bookClockInfoId);
return super.sqlSessionTemplate.selectList(getStatement("getClassifyIdsByClassfyId"),paramMap);
}
} }
...@@ -60,7 +60,21 @@ public class BookClockInfoServiceImpl implements BookClockInfoService { ...@@ -60,7 +60,21 @@ public class BookClockInfoServiceImpl implements BookClockInfoService {
@RequestMapping(value = "sendBookClockGroupMessage", method = RequestMethod.POST) @RequestMapping(value = "sendBookClockGroupMessage", method = RequestMethod.POST)
public void sendBookClockGroupMessage(@RequestBody Map<String, Object> map) throws BizException { public void sendBookClockGroupMessage(@RequestBody Map<String, Object> map) throws BizException {
LOGGER.info("内部接口群发消息被调用"+map.toString()); LOGGER.info("内部接口群发消息被调用"+map.toString());
bookClockBiz.sendBookClockGroupMessage(map); return;
// bookClockBiz.sendBookClockGroupMessage(map);
} }
/**
* @description 处理关联应用的打卡的旧数据
* @author 杨涛
* @date 2019/5/10 10:28
*/
@Override
@RequestMapping(value = "/dealOldData4WeixinClock", method = RequestMethod.GET)
public void dealOldData4WeixinClock() {
bookClockBiz.dealOldData4WeixinClock();
}
} }
package com.pcloud.book.consumer.settlement; package com.pcloud.book.consumer.settlement;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.settlementcenter.record.dto.GetGroupClassifyIncomeDTO;
import com.pcloud.settlementcenter.record.dto.GetGroupQrcodeIncomeDTO;
import com.pcloud.settlementcenter.record.dto.GroupRescourceIncomeParamDTO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
...@@ -102,4 +109,52 @@ public class BookConsr { ...@@ -102,4 +109,52 @@ public class BookConsr {
LOGGER.info("【书刊-结算(消)】批量获取书刊总收益,<END>"); LOGGER.info("【书刊-结算(消)】批量获取书刊总收益,<END>");
return resultMap; return resultMap;
} }
@ParamLog(value = "批量获取社群码下资源的收益", isBefore = false, isAfterReturn = false)
public Map<Long, BigDecimal> getRescourceIncome(GroupRescourceIncomeParamDTO groupRescourceIncomeParamDTO) throws BizException {
Map<Long, BigDecimal> rescourceIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long, BigDecimal>>> responseEntityP = bookService.getGroupRescourceIncome(groupRescourceIncomeParamDTO);
rescourceIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码下资源的收益.[getRescourceIncome]:" + e.getMessage(), e);
}
return rescourceIncome;
}
@ParamLog(value = "批量获取社群码下资源的总收益", isBefore = false, isAfterReturn = false)
public BigDecimal getRescourceTotalIncome(GroupRescourceIncomeParamDTO groupRescourceIncomeParamDTO) throws BizException {
BigDecimal rescourceTotalIncome = new BigDecimal(0);
try {
ResponseEntity<ResponseDto<BigDecimal>> responseEntityP = bookService.getGroupRescourceTotalIncome(groupRescourceIncomeParamDTO);
rescourceTotalIncome = ResponseHandleUtil.parseResponse(responseEntityP, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码下资源的总收益.[getRescourceTotalIncome]:" + e.getMessage(), e);
}
return rescourceTotalIncome == null?BigDecimal.ZERO:rescourceTotalIncome;
}
@ParamLog(value = "批量获取社群码分类的收益", isBefore = false, isAfterReturn = false)
public Map<Long,BigDecimal> getClassifyIncome(GetGroupClassifyIncomeDTO getGroupClassifyIncomeDTO) throws BizException {
Map<Long,BigDecimal> classifyIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,BigDecimal>>> responseEntityP = bookService.getGroupClassifyIncome(getGroupClassifyIncomeDTO);
classifyIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码分类的收益.[getClassifyIncome]:" + e.getMessage(), e);
}
return classifyIncome;
}
@ParamLog(value = "批量获取社群码分类下的微信群收益", isBefore = false, isAfterReturn = false)
public Map<Long,BigDecimal> getQrcodeIncome(GetGroupQrcodeIncomeDTO getGroupQrcodeIncomeDTO) throws BizException {
Map<Long,BigDecimal> qrcodeIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,BigDecimal>>> responseEntityP = bookService.getGroupQrcodeIncome(getGroupQrcodeIncomeDTO);
qrcodeIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码分类下的微信群收益.[getQrcodeIncome]:" + e.getMessage(), e);
}
return qrcodeIncome;
}
} }
...@@ -5,6 +5,9 @@ import com.pcloud.common.dto.ResponseDto; ...@@ -5,6 +5,9 @@ import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.settlementcenter.record.dto.ProductStaticUnderAppMapDTO;
import com.pcloud.settlementcenter.record.dto.ResourcesStatisticVO;
import com.pcloud.settlementcenter.record.service.BookService;
import com.pcloud.settlementcenter.record.service.SettlementService; import com.pcloud.settlementcenter.record.service.SettlementService;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -14,9 +17,8 @@ import org.springframework.http.ResponseEntity; ...@@ -14,9 +17,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
@Component("settlementConsr") @Component("settlementConsr")
public class SettlementConsr { public class SettlementConsr {
...@@ -27,6 +29,8 @@ public class SettlementConsr { ...@@ -27,6 +29,8 @@ public class SettlementConsr {
@Autowired @Autowired
private SettlementService settlementService; private SettlementService settlementService;
@Autowired
private BookService bookService;
@ParamLog(value = "获取收益", isBefore = false, isAfterReturn = false) @ParamLog(value = "获取收益", isBefore = false, isAfterReturn = false)
public Map<Long, BigDecimal> getWXGroupQrcodeIncomeByAdviser(List<Long> groupQrcodeIds, Long adviserId) throws BizException { public Map<Long, BigDecimal> getWXGroupQrcodeIncomeByAdviser(List<Long> groupQrcodeIds, Long adviserId) throws BizException {
...@@ -55,4 +59,28 @@ public class SettlementConsr { ...@@ -55,4 +59,28 @@ public class SettlementConsr {
} }
return map; return map;
} }
@ParamLog(value = "获取日期列表", isBefore = false, isAfterReturn = false)
public List<Date> getDateList(Integer dayNum,Date startDate, Date endDate) throws BizException {
List<Date> dateList = new ArrayList<>();
try {
ResponseEntity<ResponseDto<List<Date>>> responseEntityP = settlementService.getDateList(dayNum,startDate,endDate);
dateList = ResponseHandleUtil.parseList(responseEntityP, Date.class);
} catch (Exception e) {
LOGGER.error("获取日期列表.[getDateList]:" + e.getMessage(), e);
}
return dateList;
}
@ParamLog(value = "社群码应用下商品的收益", isBefore = false, isAfterReturn = false)
public Map<Long,List<ResourcesStatisticVO>> getProductStaticUnderApp(ProductStaticUnderAppMapDTO productStaticUnderAppMapDTO) throws BizException {
Map<Long,List<ResourcesStatisticVO>> resourcesStatisticVOS = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,List<ResourcesStatisticVO>>>> responseEntityP = bookService.getProductStaticUnderAppMap(productStaticUnderAppMapDTO);
resourcesStatisticVOS = ResponseHandleUtil.parseMapList(responseEntityP, Long.class, ResourcesStatisticVO.class);
} catch (Exception e) {
LOGGER.error("社群码应用下商品的收益.[getProductStaticUnderApp]:" + e.getMessage(), e);
}
return resourcesStatisticVOS;
}
} }
...@@ -7,6 +7,7 @@ import com.pcloud.common.utils.ListUtils; ...@@ -7,6 +7,7 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.facade.tradecenter.dto.*; import com.pcloud.facade.tradecenter.dto.*;
import com.pcloud.facade.tradecenter.service.OrderFormService; import com.pcloud.facade.tradecenter.service.OrderFormService;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -14,10 +15,7 @@ import org.springframework.http.ResponseEntity; ...@@ -14,10 +15,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @Author:lili * @Author:lili
...@@ -126,6 +124,7 @@ public class TradeConsr { ...@@ -126,6 +124,7 @@ public class TradeConsr {
return amount; return amount;
} }
@ParamLog("获取用户购买或者参与过的社群码ID") @ParamLog("获取用户购买或者参与过的社群码ID")
public List<Long> getBuyBookGroupIdList(Long channelId, Long wechatUserId) throws BizException { public List<Long> getBuyBookGroupIdList(Long channelId, Long wechatUserId) throws BizException {
List<Long> results = new ArrayList<>(); List<Long> results = new ArrayList<>();
...@@ -138,4 +137,46 @@ public class TradeConsr { ...@@ -138,4 +137,46 @@ public class TradeConsr {
return results; return results;
} }
@ParamLog("获取社群码下的应用作品购买量")
public List<ClassifyPayDetailDto> getGroupBuyCount(Long bookGroupId, Long classifyId, Long qrcodeId, Date startDate, Date endDate) throws BizException{
List<ClassifyPayDetailDto> classifyPayDetailDtos = new ArrayList<>();
try {
ResponseEntity<ResponseDto<List<ClassifyPayDetailDto>>> responseEntity = orderFormService.getSaleVolume(startDate,endDate,bookGroupId,classifyId,qrcodeId);
classifyPayDetailDtos = ResponseHandleUtil.parseListResponse(responseEntity, ClassifyPayDetailDto.class);
} catch (Exception e) {
LOGGER.error("获取社群码下的应用作品购买量:" + e.getMessage(), e);
}
if (ListUtils.isEmpty(classifyPayDetailDtos)) {
classifyPayDetailDtos = new ArrayList<>();
}
return classifyPayDetailDtos;
}
@ParamLog("查询社区码下购买应用详情")
public Map<Long, GroupMoneyDto> getSaleDetail4Group(GroupIncomeSearchDto groupIncomeSearchDto) throws BizException {
Map<Long, GroupMoneyDto> groupMoneyDtoMap = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long, GroupMoneyDto>>> responseEntity = orderFormService.getSaleDetail4Group(groupIncomeSearchDto);
groupMoneyDtoMap = ResponseHandleUtil.parseMap(responseEntity, Long.class, GroupMoneyDto.class);
} catch (Exception e) {
LOGGER.error("查询社区码下购买应用详情:" + e.getMessage(), e);
}
if (MapUtils.isEmpty(groupMoneyDtoMap)) {
groupMoneyDtoMap = new HashMap<>();
}
return groupMoneyDtoMap;
}
@ParamLog("查询社群码下购买应用或作品的总销售额")
public BigDecimal getTotalSale(Long bookGroupId, Long classifyId, Long qrcodeId, String type) throws BizException {
BigDecimal totalSale = BigDecimal.ZERO;
try {
ResponseEntity<ResponseDto<BigDecimal>> responseEntity = orderFormService.getSaleAmount4Group(bookGroupId,classifyId,qrcodeId,type);
totalSale = ResponseHandleUtil.parseResponse(responseEntity, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("查询社区码下购买应用详情:" + e.getMessage(), e);
}
return totalSale;
}
} }
...@@ -178,6 +178,19 @@ public class WechatGroupConsr { ...@@ -178,6 +178,19 @@ public class WechatGroupConsr {
return null; return null;
} }
@ParamLog(value = "群分类累计进群人数与今日进群人数", isBefore = false, isAfterReturn = false)
public Map<Long, Long> getclassifyMemberCount(List<Long> classifyIds) throws BizException {
if (ListUtils.isEmpty(classifyIds)) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(groupMemberService.mapGroupClassifyStatisInfo(classifyIds), Long.class, Long.class);
} catch (Exception e) {
log.error("群分类累计进群人数与今日进群人数.[getclassifyMemberCount]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "活跃人数与总发言数", isBefore = false, isAfterReturn = false) @ParamLog(value = "活跃人数与总发言数", isBefore = false, isAfterReturn = false)
public Map<Long, GroupChatCountDTO> getChatCountByGroup(List<Long> groupQrcodeIds, Long bookGroupId) throws BizException { public Map<Long, GroupChatCountDTO> getChatCountByGroup(List<Long> groupQrcodeIds, Long bookGroupId) throws BizException {
if (ListUtils.isEmpty(groupQrcodeIds)) { if (ListUtils.isEmpty(groupQrcodeIds)) {
......
...@@ -2,6 +2,7 @@ package com.pcloud.book.group.biz; ...@@ -2,6 +2,7 @@ package com.pcloud.book.group.biz;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.group.dto.*; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.dto.AppStatisticsDTO; import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyKeywordDTO; import com.pcloud.book.group.dto.ClassifyKeywordDTO;
...@@ -9,6 +10,11 @@ import com.pcloud.book.group.dto.GroupStoreMyPayDto; ...@@ -9,6 +10,11 @@ import com.pcloud.book.group.dto.GroupStoreMyPayDto;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO; import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.*; import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.vo.StatisticVO; import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.common.dto.StoreFlowInfoDto; import com.pcloud.common.dto.StoreFlowInfoDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
...@@ -265,6 +271,11 @@ public interface BookGroupBiz { ...@@ -265,6 +271,11 @@ public interface BookGroupBiz {
Boolean getIsShowBookName(Long partyId); Boolean getIsShowBookName(Long partyId);
/** /**
* 删除社群码
*/
void deleteBookGroup(Long bookGroupId);
/**
* 根据分类id获取个人二维码信息 * 根据分类id获取个人二维码信息
*/ */
OwnAltQrcodeInfoDTO getOwnAltQrcodeInfoDTOByClassifyId(Long wechatUserId, Long classifyId); OwnAltQrcodeInfoDTO getOwnAltQrcodeInfoDTOByClassifyId(Long wechatUserId, Long classifyId);
...@@ -317,4 +328,47 @@ public interface BookGroupBiz { ...@@ -317,4 +328,47 @@ public interface BookGroupBiz {
* 获取用户购买或者参与过的社群书信息 * 获取用户购买或者参与过的社群书信息
*/ */
PageBeanNew<GroupStoreMyPayDto> getUserBrowseGroup4KnowLedgeMall(Long channelId, Long wechatUserId, Integer currentPage, Integer numPerPage); PageBeanNew<GroupStoreMyPayDto> getUserBrowseGroup4KnowLedgeMall(Long channelId, Long wechatUserId, Integer currentPage, Integer numPerPage);
/**
* 获取社群码相关数据
*/
BookGroupStatisticsDTO getBookGroupStatisByBookGroupId(Long bookGroupId);
/**
* 收益统计
*/
PageBeanNew<ResourcesStatisticVO> getGroupIncomeStatic(GroupIncomeStaticParamVO groupIncomeStaticParamVO, Long adviserId);
/**
* 社群码浏览趋势图
*/
List<GroupScanTrendVO> getGroupScanTrend(GroupScanTrendParamVO groupScanTrendParamVO, Long adviserId);
/**
* 社群码分类统计
*/
PageBeanNew<GroupStatisticVO> getClassifyStatistic(Long bookGroupId, Long adviserId, Integer currentPage, Integer numPerPage);
/**
* 社群码分类的微信群统计
*/
List<WxGroupStatisticVO> getQrcodeStatistic(Long bookGroupId, Long classifyId, Long adviserId);
/**
* 资源数据统计
*/
TotalRescourceDataVO getTotalRescourceData(Long bookGroupId,Long adviserId, Long classifyId, Long qrcodeId, String type);
/**
* 资源数据导出
*/
Map<String, String> exportRescourceIncomeData(Long bookGroupId,Long adviserId);
/**
* 获取资源浏览数据
*/
Map<Long, Long> getResourcesBrowseCount(ResourceBrowseParamDto resourceBrowseParamDto);
} }
package com.pcloud.book.group.biz; package com.pcloud.book.group.biz;
import com.pcloud.book.group.dto.BookGroupStatisticDTO; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.group.dto.ClassifyLearningReportDto;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.entity.BookGroupClassify; import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.vo.AddClassifyVO; import com.pcloud.book.group.vo.AddClassifyVO;
import com.pcloud.book.group.vo.AdviserClassifyParam; import com.pcloud.book.group.vo.AdviserClassifyParam;
...@@ -73,6 +67,13 @@ public interface BookGroupClassifyBiz { ...@@ -73,6 +67,13 @@ public interface BookGroupClassifyBiz {
ClassifyVO getClassify(Long classifyId); ClassifyVO getClassify(Long classifyId);
/** /**
* 根据id获取微信群分类
* @param weixinGroupClassifyPrimaryIds
* @return
*/
Map<Long, String> getClassifyByIds(List<Long> weixinGroupClassifyPrimaryIds);
/**
* @Author:lili * @Author:lili
* @Desr:根据规格对应分类信息 * @Desr:根据规格对应分类信息
* @Date:2019/4/19 11:46 * @Date:2019/4/19 11:46
...@@ -202,6 +203,9 @@ public interface BookGroupClassifyBiz { ...@@ -202,6 +203,9 @@ public interface BookGroupClassifyBiz {
PageBeanNew<ClassifyDTO> listSimpleBookGroupClassify4Adviser(Long adviserId, BookGroupClassify bookGroupClassify, PageParam pageParam); PageBeanNew<ClassifyDTO> listSimpleBookGroupClassify4Adviser(Long adviserId, BookGroupClassify bookGroupClassify, PageParam pageParam);
PageBeanNew<AdviserClassifyVO> listAdviserClassify(Long adviserId, AdviserClassifyParam adviserClassifyParam); PageBeanNew<AdviserClassifyVO> listAdviserClassify(Long adviserId, AdviserClassifyParam adviserClassifyParam);
Map<Long, BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds);
/** /**
* 更新是否开启微学习报告 * 更新是否开启微学习报告
*/ */
...@@ -224,4 +228,12 @@ public interface BookGroupClassifyBiz { ...@@ -224,4 +228,12 @@ public interface BookGroupClassifyBiz {
* 拖动排序 * 拖动排序
*/ */
void dragSortClassify(List<Long> classifyIds); void dragSortClassify(List<Long> classifyIds);
/**
* 埋点记录点击群分类次数
*/
void clickClassify(Long wechatUserId, Long bookGroupId, Long classifyId);
List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId);
} }
...@@ -65,6 +65,13 @@ public interface GroupQrcodeBiz { ...@@ -65,6 +65,13 @@ public interface GroupQrcodeBiz {
PageBeanNew<ClassifyQrcodeVO> listQrcodeByClassify(ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO); PageBeanNew<ClassifyQrcodeVO> listQrcodeByClassify(ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO);
/** /**
* @description 获取社群码类别下的群---不分页
* @author 戴兴
* @date 2019/7/28 15:59
*/
List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId);
/**
* @Author:lili * @Author:lili
* @Desr:修改微信群名称 * @Desr:修改微信群名称
* @Date:2019/4/1 11:22 * @Date:2019/4/1 11:22
......
...@@ -107,6 +107,11 @@ public interface WeixinQrcodeBiz { ...@@ -107,6 +107,11 @@ public interface WeixinQrcodeBiz {
QrStatisticsVO getQrStatistics(); QrStatisticsVO getQrStatistics();
/** /**
* 根据版本分类统计平台端二维码数据
*/
List<QrStatisticsVO> getQrStatisticsByVersion();
/**
* 分页获取可用微信群 * 分页获取可用微信群
* @param currentPage * @param currentPage
* @param numPerPage * @param numPerPage
......
...@@ -21,19 +21,7 @@ import com.pcloud.book.group.dao.BookQrcodeUserDao; ...@@ -21,19 +21,7 @@ import com.pcloud.book.group.dao.BookQrcodeUserDao;
import com.pcloud.book.group.dao.JoinGroupCipherDao; import com.pcloud.book.group.dao.JoinGroupCipherDao;
import com.pcloud.book.group.dao.LearningReportBrowseRecordDao; import com.pcloud.book.group.dao.LearningReportBrowseRecordDao;
import com.pcloud.book.group.dao.LearningReportTouchRecordDao; import com.pcloud.book.group.dao.LearningReportTouchRecordDao;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.group.dto.ClassifyLearningCountDto;
import com.pcloud.book.group.dto.ClassifyLearningReportDto;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.entity.BookGroupClassify; import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.entity.BookQrcodeUser; import com.pcloud.book.group.entity.BookQrcodeUser;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
...@@ -98,6 +86,7 @@ import java.util.Date; ...@@ -98,6 +86,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -192,10 +181,12 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -192,10 +181,12 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
log.info("[新增分类] : 可用微信群数量:{}个", wechatGroupNum); log.info("[新增分类] : 可用微信群数量:{}个", wechatGroupNum);
throw new BookBizException(BookBizException.PARAM_IS_NULL, "群二维码数量不足,您可以明天再创建群。"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "群二维码数量不足,您可以明天再创建群。");
} }
} }
Integer generation = null; Integer generation = null;
if (new Integer(2).equals(qrcodeNameAndProId.getJoinGroupType())) { if (new Integer(2).equals(qrcodeNameAndProId.getJoinGroupType())) {
generation = 3; generation = 3;
} }
WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode(generation); WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode(generation);
if (oneQrcode == null) { if (oneQrcode == null) {
...@@ -252,7 +243,10 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -252,7 +243,10 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
bookKeywords.add(bookKeyword); bookKeywords.add(bookKeyword);
}); });
bookKeywordDao.insert(bookKeywords); bookKeywordDao.insert(bookKeywords);
SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), oneQrcode.getWeixinGroupId(), groupQrcode.getGroupName()); final String wechatGroupId = oneQrcode.getWeixinGroupId();
Map<String, BookWxQrcodeDTO> groupVersion = weixinQrcodeBiz.getGroupVersion(Collections.singletonList(wechatGroupId));
String ip = Optional.ofNullable(groupVersion.get(wechatGroupId)).orElse(new BookWxQrcodeDTO()).getWechatGroupIp();
SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), oneQrcode.getWeixinGroupId(), groupQrcode.getGroupName(), ip);
} }
@ParamLog("新增商品对应规格") @ParamLog("新增商品对应规格")
...@@ -406,6 +400,22 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -406,6 +400,22 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
} }
@Override @Override
@ParamLog("根据主键id获取群分类")
public Map<Long, String> getClassifyByIds(List<Long> weixinGroupClassifyPrimaryIds) {
if (ListUtils.isEmpty(weixinGroupClassifyPrimaryIds)) {
return new HashMap<>();
}
List<BookGroupClassify> bookGroupClassifyList = bookGroupClassifyDao.getClassifyByIds(weixinGroupClassifyPrimaryIds);
Map<Long, String> classifyMap = new HashMap<>();
bookGroupClassifyList.stream().forEach(eachBookGroupClassify ->{
Long key = eachBookGroupClassify.getId();
String value = eachBookGroupClassify.getClassify();
classifyMap.put(key, value);
});
return classifyMap;
}
@Override
@ParamLog("根据规格获取分类基本信息(图书,运营,二维码,分类)") @ParamLog("根据规格获取分类基本信息(图书,运营,二维码,分类)")
public ClassifyDTO getBaseInfoBySpecId(Long productSpecId) { public ClassifyDTO getBaseInfoBySpecId(Long productSpecId) {
ClassifyDTO classifyDTO = bookGroupClassifyDao.getBaseInfoBySpecId(productSpecId); ClassifyDTO classifyDTO = bookGroupClassifyDao.getBaseInfoBySpecId(productSpecId);
...@@ -952,6 +962,15 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -952,6 +962,15 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
return pageBeanNew; return pageBeanNew;
} }
@Override
public Map<Long, BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds) {
if (!ListUtils.isEmpty(bookIds)){
return bookGroupClassifyDao.getGroupClassifyCount(bookIds);
}else {
return new HashMap<>();
}
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ParamLog("更新是否开启微学习报告") @ParamLog("更新是否开启微学习报告")
@Override @Override
...@@ -1049,4 +1068,20 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -1049,4 +1068,20 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
bookGroupClassifyDao.dragSortClassify(classifyIds); bookGroupClassifyDao.dragSortClassify(classifyIds);
} }
@Override
public void clickClassify(Long wechatUserId, Long bookGroupId, Long classifyId) {
bookGroupClassifyDao.addClickClassify(wechatUserId,bookGroupId,classifyId);
}
@Override
public List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId) {
List<ListClassifyVO> classifyVOS = bookGroupClassifyDao.getClassifyIngoreDelete(bookGroupId);
if (ListUtils.isEmpty(classifyVOS)){
return new ArrayList<>();
}
return classifyVOS;
}
} }
...@@ -9,10 +9,24 @@ import com.pcloud.book.consumer.label.LabelConsr; ...@@ -9,10 +9,24 @@ import com.pcloud.book.consumer.label.LabelConsr;
import com.pcloud.book.consumer.reader.ReaderConsr; import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.*; import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.GroupAnnouncementBiz;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.biz.WeixinQrcodeBiz;
import com.pcloud.book.group.constants.BookBusinessConstants; import com.pcloud.book.group.constants.BookBusinessConstants;
import com.pcloud.book.group.dao.GroupQrcodeDao; import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.*; import com.pcloud.book.group.dto.AutoUpdateGroupNumDTO;
import com.pcloud.book.group.dto.BookWxQrcodeDTO;
import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.PushAddUserMessageDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.enums.QrcodeStatusEnum; import com.pcloud.book.group.enums.QrcodeStatusEnum;
import com.pcloud.book.group.tools.SendWeixinRequestTools; import com.pcloud.book.group.tools.SendWeixinRequestTools;
...@@ -28,6 +42,7 @@ import com.pcloud.book.keywords.dto.KeywordUserCountDTO; ...@@ -28,6 +42,7 @@ import com.pcloud.book.keywords.dto.KeywordUserCountDTO;
import com.pcloud.book.mq.producer.BookMQProducer; import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.book.push.dao.PushGroupDao; import com.pcloud.book.push.dao.PushGroupDao;
import com.pcloud.book.push.entity.PushGroup; import com.pcloud.book.push.entity.PushGroup;
import com.pcloud.book.riddle.dto.GroupRiddleDTO;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
...@@ -37,7 +52,7 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils; ...@@ -37,7 +52,7 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.sdk.wxgroup.WxGroupSDK; import com.sdk.wxgroup.WxGroupSDK;
import com.pcloud.book.riddle.dto.GroupRiddleDTO;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -48,7 +63,6 @@ import org.springframework.util.CollectionUtils; ...@@ -48,7 +63,6 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -128,7 +142,7 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -128,7 +142,7 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
try{ try{
if (BookBusinessConstants.GROUP_NUM_DTO_MAP.size() < 1) { if (BookBusinessConstants.GROUP_NUM_DTO_MAP.size() < 1) {
try { try {
Thread.sleep(5000); Thread.sleep(10000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("[updateGroupNum] InterruptedException:{}", e); log.error("[updateGroupNum] InterruptedException:{}", e);
} }
...@@ -146,17 +160,24 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -146,17 +160,24 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
Integer peopleCounts = WxGroupSDK.getPeopleCounts(value.getWxGroupId(), value.getRobotId(), value.getIp()); Integer peopleCounts = WxGroupSDK.getPeopleCounts(value.getWxGroupId(), value.getRobotId(), value.getIp());
if (null == peopleCounts || peopleCounts < 1) { if (null == peopleCounts || peopleCounts < 1) {
log.info("[更新群人数] null == peopleCounts || peopleCounts < 1 entry:{}; peopleCounts:{}", entry, peopleCounts); log.info("[更新群人数] null == peopleCounts || peopleCounts < 1 entry:{}; peopleCounts:{}", entry, peopleCounts);
// 若未获取到将其移除
BookBusinessConstants.GROUP_NUM_DTO_MAP.remove(entry.getKey());
continue; continue;
} }
log.info("[更新群人数] entry:{}, peopleCounts:{}", entry, peopleCounts); log.info("[更新群人数] entry:{}, peopleCounts:{}", entry, peopleCounts);
groupQrcodeDao.updateUserNumber(value.getWxGroupId(), peopleCounts); groupQrcodeDao.updateUserNumber(value.getWxGroupId(), peopleCounts);
BookBusinessConstants.GROUP_NUM_DTO_MAP.remove(entry.getKey()); BookBusinessConstants.GROUP_NUM_DTO_MAP.remove(entry.getKey());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error("[updateGroupNum] InterruptedException:{}", e);
}
} }
} catch (Exception e) { } catch (Exception e) {
log.error("[updateGroupNum] : Exception:{}", e); log.error("[updateGroupNum] : Exception:{}", e);
} }
try { try {
Thread.sleep(5000); Thread.sleep(10000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("[updateGroupNum] InterruptedException:{}", e); log.error("[updateGroupNum] InterruptedException:{}", e);
} }
...@@ -229,6 +250,15 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -229,6 +250,15 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
return pageBeanNew; return pageBeanNew;
} }
@Override
public List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId) {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeDao.getQrcodeByClassify(classifyId);
if (ListUtils.isEmpty(qrcodeByClassify)){
return new ArrayList<>();
}
return qrcodeByClassify;
}
@ParamLog(value = "设置关键词次数", isBefore = false) @ParamLog(value = "设置关键词次数", isBefore = false)
private void setKeywordCount(List<ClassifyQrcodeVO> classifyQrcodeVOS) { private void setKeywordCount(List<ClassifyQrcodeVO> classifyQrcodeVOS) {
if (ListUtils.isEmpty(classifyQrcodeVOS)) { if (ListUtils.isEmpty(classifyQrcodeVOS)) {
...@@ -279,8 +309,11 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -279,8 +309,11 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
groupQrcodeDao.modifyNameById(wechatGroupName, id, updateUser); groupQrcodeDao.modifyNameById(wechatGroupName, id, updateUser);
if (changeGroupNameDTO != null) { if (changeGroupNameDTO != null) {
//获取修改群名称小号 //获取修改群名称小号
String robotId = wechatGroupConsr.getRobotIdByGroupId(changeGroupNameDTO.getWxGroupId()); final String wechatGroupId = changeGroupNameDTO.getWxGroupId();
SendWeixinRequestTools.changeGroupName(robotId, changeGroupNameDTO.getWxGroupId(), wechatGroupName); String robotId = wechatGroupConsr.getRobotIdByGroupId(wechatGroupId);
Map<String, BookWxQrcodeDTO> groupVersion = weixinQrcodeBiz.getGroupVersion(Collections.singletonList(wechatGroupId));
String ip = Optional.ofNullable(groupVersion.get(wechatGroupId)).orElse(new BookWxQrcodeDTO()).getWechatGroupIp();
SendWeixinRequestTools.changeGroupName(robotId, changeGroupNameDTO.getWxGroupId(), wechatGroupName, ip);
} }
} }
...@@ -311,6 +344,9 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -311,6 +344,9 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
numDTO = new AutoUpdateGroupNumDTO(weixinGroupId, robotId, ip, new Date()); numDTO = new AutoUpdateGroupNumDTO(weixinGroupId, robotId, ip, new Date());
} else { } else {
numDTO.getNum().incrementAndGet(); numDTO.getNum().incrementAndGet();
numDTO.setRobotId(robotId);
numDTO.setIp(ip);
numDTO.setWxGroupId(weixinGroupId);
numDTO.setStartTime(new Date()); numDTO.setStartTime(new Date());
} }
BookBusinessConstants.GROUP_NUM_DTO_MAP.put(weixinGroupId, numDTO); BookBusinessConstants.GROUP_NUM_DTO_MAP.put(weixinGroupId, numDTO);
...@@ -526,7 +562,10 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -526,7 +562,10 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
} }
}); });
//String robotId = wechatGroupConsr.getRobotIdByGroupId(oneQrcode.getWeixinGroupId()); //String robotId = wechatGroupConsr.getRobotIdByGroupId(oneQrcode.getWeixinGroupId());
SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), oneQrcode.getWeixinGroupId(), groupName); final String wechatGroupId = oneQrcode.getWeixinGroupId();
Map<String, BookWxQrcodeDTO> groupVersion = weixinQrcodeBiz.getGroupVersion(Collections.singletonList(wechatGroupId));
String ip = Optional.ofNullable(groupVersion.get(wechatGroupId)).orElse(new BookWxQrcodeDTO()).getWechatGroupIp();
SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), wechatGroupId, groupName, ip);
} }
} }
} }
......
...@@ -30,7 +30,6 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils; ...@@ -30,7 +30,6 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.group.dto.GroupRobotDTO; import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.sdk.wxgroup.AddToGroupVO; import com.sdk.wxgroup.AddToGroupVO;
import com.sdk.wxgroup.GroupInfoVO;
import com.sdk.wxgroup.QrcodeVO; import com.sdk.wxgroup.QrcodeVO;
import com.sdk.wxgroup.WxGroupSDK; import com.sdk.wxgroup.WxGroupSDK;
...@@ -49,8 +48,6 @@ import java.util.HashMap; ...@@ -49,8 +48,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -220,7 +217,10 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz { ...@@ -220,7 +217,10 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz {
} }
for (ChangeGroupNameDTO changeGroupNameDTO : changeGroupNameDTOS) { for (ChangeGroupNameDTO changeGroupNameDTO : changeGroupNameDTOS) {
String robotId = wechatGroupConsr.getRobotIdByGroupId(changeGroupNameDTO.getWxGroupId()); String robotId = wechatGroupConsr.getRobotIdByGroupId(changeGroupNameDTO.getWxGroupId());
SendWeixinRequestTools.changeGroupName(robotId, changeGroupNameDTO.getWxGroupId(), changeGroupNameDTO.getWxGroupName()); final String wechatGroupId = changeGroupNameDTO.getWxGroupId();
Map<String, BookWxQrcodeDTO> groupVersion = weixinQrcodeBiz.getGroupVersion(Collections.singletonList(wechatGroupId));
String ip = Optional.ofNullable(groupVersion.get(wechatGroupId)).orElse(new BookWxQrcodeDTO()).getWechatGroupIp();
SendWeixinRequestTools.changeGroupName(robotId, changeGroupNameDTO.getWxGroupId(), changeGroupNameDTO.getWxGroupName(), ip);
} }
} }
...@@ -324,6 +324,35 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz { ...@@ -324,6 +324,35 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz {
} }
@Override @Override
@ParamLog("按照版本分类获取平台端统计数据")
public List<QrStatisticsVO> getQrStatisticsByVersion() {
List<QrStatisticsVO> qrStatistics = weixinQrcodeDao.getQrStatisticsByVersion();
List<QrStatisticsVO> counts = weixinQrcodeDao.getQrcodeCountByVersion();
if (ListUtils.isEmpty(qrStatistics)) {
qrStatistics = new ArrayList<>();
QrStatisticsVO qr = new QrStatisticsVO();
qr.setAllCount(0);
qr.setInUseCount(0);
qr.setNotUseCount(0);
qr.setVersion(0);
qrStatistics.add(qr);
return qrStatistics;
}
// 组合两部分数据
for(QrStatisticsVO qr:qrStatistics){
for(QrStatisticsVO c: counts){
if(qr.getVersion().equals(c.getVersion())){
qr.setAllCount(c.getAllCount());
break;
}
}
}
return qrStatistics;
}
@Override
@ParamLog("分页获取可用微信群") @ParamLog("分页获取可用微信群")
public List<BookWxQrcodeDTO> listAvailableGroupByPage(Integer currentPage, Integer numPerPage) { public List<BookWxQrcodeDTO> listAvailableGroupByPage(Integer currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
......
...@@ -3,9 +3,14 @@ package com.pcloud.book.group.dao; ...@@ -3,9 +3,14 @@ package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.AppClickDTO; import com.pcloud.book.group.dto.AppClickDTO;
import com.pcloud.book.group.dto.AppStatisticsDTO; import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.entity.AppClickRecord; import com.pcloud.book.group.entity.AppClickRecord;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
import com.pcloud.book.group.vo.ResourceClickVO;
import com.pcloud.book.group.vo.ResourcesStatisticVO;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List; import java.util.List;
import java.util.Map;
public interface AppClickRecordDao extends BaseDao<AppClickRecord> { public interface AppClickRecordDao extends BaseDao<AppClickRecord> {
/** /**
...@@ -17,4 +22,29 @@ public interface AppClickRecordDao extends BaseDao<AppClickRecord> { ...@@ -17,4 +22,29 @@ public interface AppClickRecordDao extends BaseDao<AppClickRecord> {
* 获取最近点击 * 获取最近点击
*/ */
List<AppClickDTO> getRecentlyClick(Long wechatUserId, Long qrcodeId, Integer top); List<AppClickDTO> getRecentlyClick(Long wechatUserId, Long qrcodeId, Integer top);
/**
* 获取资源点击趋势
*/
List<GroupScanTrendVO> getClickTrend(GroupScanTrendParamVO groupScanTrendParamVO);
/**
* 获取资源点击次数
*/
Map<Long, ResourceClickVO> getResourceClick(Map<String,Object> map);
/**
* 获取资源点击总数
*/
Long getRescourceTotalClick(Long bookGroupId,Long classifyId,Long qrcodeId,String type);
/**
* 获取资源id
*/
List<Long> getRescourceIds(Long bookGroupId,Long classifyId,Long qrcodeId,String type);
/**
* 获取资源点击数
*/
List<ResourcesStatisticVO> getClickStatistics(Long bookGroupId,Long classifyId,Long qrcodeId,String type);
} }
...@@ -4,4 +4,6 @@ import com.pcloud.book.group.entity.AppTouchRecord; ...@@ -4,4 +4,6 @@ import com.pcloud.book.group.entity.AppTouchRecord;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
public interface AppTouchRecordDao extends BaseDao<AppTouchRecord> { public interface AppTouchRecordDao extends BaseDao<AppTouchRecord> {
Long getCountByBokkGroupId(Long bookGroupId, String type);
} }
...@@ -62,6 +62,14 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> { ...@@ -62,6 +62,14 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
Integer getClassifyCount(Long bookGroupId); Integer getClassifyCount(Long bookGroupId);
/** /**
* 据id获取微信分类
* @param weixinGroupClassifyPrimaryIds
* @return
*/
List<BookGroupClassify> getClassifyByIds(List<Long> weixinGroupClassifyPrimaryIds);
/**
* @Author:lili * @Author:lili
* @Desr:获取所有分类列表 * @Desr:获取所有分类列表
* @Date:2019/4/18 19:46 * @Date:2019/4/18 19:46
...@@ -233,6 +241,8 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> { ...@@ -233,6 +241,8 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
* @return * @return
*/ */
List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId); List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId);
Map<Long,BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds);
GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName); GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName);
...@@ -241,8 +251,16 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> { ...@@ -241,8 +251,16 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
*/ */
void updateHasOpenLearningReport(Long classifyId, Boolean hasOpenLearningReport, Long partyId); void updateHasOpenLearningReport(Long classifyId, Boolean hasOpenLearningReport, Long partyId);
/** /**
* 拖动排序 * 拖动排序
*/ */
void dragSortClassify(List<Long> classifyIds); void dragSortClassify(List<Long> classifyIds);
void addClickClassify(Long wechatUserId, Long bookGroupId, Long classifyId);
Map<Long, ClickClassifyDTO> mapClickClassify(List<Long> classifyIds);
List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId);
} }
...@@ -143,4 +143,9 @@ public interface BookGroupDao extends BaseDao<BookGroup> { ...@@ -143,4 +143,9 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
* 获取是否显示书名 * 获取是否显示书名
*/ */
Boolean getIsShowBookName(Long partyId); Boolean getIsShowBookName(Long partyId);
/**
* 删除社群书
*/
void deleteByBookGroupId(Long bookGroupId);
} }
...@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao; ...@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao;
import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO; import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO;
import com.pcloud.book.group.dto.*; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO; import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO; import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -204,4 +205,9 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> { ...@@ -204,4 +205,9 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
*/ */
void updateRiddleOpenStatus(Long qrcodeId, Boolean status); void updateRiddleOpenStatus(Long qrcodeId, Boolean status);
/**
* 根据分类id获取分类下的群---不分页
*/
List<ClassifyQrcodeVO> getQrcodeByClassify(Long classifyId);
} }
...@@ -41,6 +41,12 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> { ...@@ -41,6 +41,12 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> {
QrStatisticsVO getQrStatistics(); QrStatisticsVO getQrStatistics();
/** /**
* 获取依据版本分类的二维码统计数据
* @return 依据版本分类的二维码统计数据
*/
List<QrStatisticsVO> getQrStatisticsByVersion();
/**
* @Author:lili * @Author:lili
* @Desr:将处理中的二维码修改为处理失败 * @Desr:将处理中的二维码修改为处理失败
* @Date:2019/3/7 15:21 * @Date:2019/3/7 15:21
...@@ -117,6 +123,8 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> { ...@@ -117,6 +123,8 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> {
*/ */
Integer getQrcodeCount(); Integer getQrcodeCount();
List<QrStatisticsVO> getQrcodeCountByVersion();
/** /**
* @Author:lili * @Author:lili
* @Desr:校验存在性 * @Desr:校验存在性
......
...@@ -4,6 +4,10 @@ import com.pcloud.book.group.dao.AppClickRecordDao; ...@@ -4,6 +4,10 @@ import com.pcloud.book.group.dao.AppClickRecordDao;
import com.pcloud.book.group.dto.AppClickDTO; import com.pcloud.book.group.dto.AppClickDTO;
import com.pcloud.book.group.dto.AppStatisticsDTO; import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.entity.AppClickRecord; import com.pcloud.book.group.entity.AppClickRecord;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
import com.pcloud.book.group.vo.ResourceClickVO;
import com.pcloud.book.group.vo.ResourcesStatisticVO;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -35,4 +39,44 @@ public class AppClickRecordDaoImpl extends BaseDaoImpl<AppClickRecord> implement ...@@ -35,4 +39,44 @@ public class AppClickRecordDaoImpl extends BaseDaoImpl<AppClickRecord> implement
map.put("top", top); map.put("top", top);
return this.getSqlSession().selectList(this.getStatement("getRecentlyClick"), map); return this.getSqlSession().selectList(this.getStatement("getRecentlyClick"), map);
} }
@Override
public List<GroupScanTrendVO> getClickTrend(GroupScanTrendParamVO groupScanTrendParamVO) {
return this.getSqlSession().selectList(this.getStatement("getClickTrend"), groupScanTrendParamVO);
}
@Override
public Map<Long, ResourceClickVO> getResourceClick(Map<String, Object> map) {
return this.getSqlSession().selectMap(this.getStatement("getResourceClick"), map,"rescourceId");
}
@Override
public Long getRescourceTotalClick(Long bookGroupId, Long classifyId, Long qrcodeId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("qrcodeId", qrcodeId);
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("type", type);
return this.getSqlSession().selectOne(this.getStatement("getRescourceTotalClick"), map);
}
@Override
public List<Long> getRescourceIds(Long bookGroupId, Long classifyId, Long qrcodeId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("qrcodeId", qrcodeId);
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("type", type);
return this.getSqlSession().selectList(this.getStatement("getRescourceIds"), map);
}
@Override
public List<ResourcesStatisticVO> getClickStatistics(Long bookGroupId, Long classifyId, Long qrcodeId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("qrcodeId", qrcodeId);
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("type", type);
return this.getSqlSession().selectList(this.getStatement("getClickStatistics"), map);
}
} }
...@@ -5,6 +5,9 @@ import com.pcloud.book.group.entity.AppTouchRecord; ...@@ -5,6 +5,9 @@ import com.pcloud.book.group.entity.AppTouchRecord;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/** /**
* @Description * @Description
* @Author ruansiyuan * @Author ruansiyuan
...@@ -12,4 +15,13 @@ import org.springframework.stereotype.Component; ...@@ -12,4 +15,13 @@ import org.springframework.stereotype.Component;
**/ **/
@Component("appTouchRecordDao") @Component("appTouchRecordDao")
public class AppTouchRecordDaoImpl extends BaseDaoImpl<AppTouchRecord> implements AppTouchRecordDao { public class AppTouchRecordDaoImpl extends BaseDaoImpl<AppTouchRecord> implements AppTouchRecordDao {
@Override
public Long getCountByBokkGroupId(Long bookGroupId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("bookGroupId",bookGroupId);
map.put("type",type);
return this.getSqlSession().selectOne(this.getStatement("getCountByBokkGroupId"), map);
}
} }
...@@ -65,6 +65,10 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp ...@@ -65,6 +65,10 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
} }
@Override @Override
public List<BookGroupClassify> getClassifyByIds(List<Long> weixinGroupClassifyPrimaryIds) {
return this.getSqlSession().selectList(this.getStatement("getClassifyByIds"), weixinGroupClassifyPrimaryIds);
}
@Override
public List<ListClassifyVO> listAllClassifyByRank(Long bookGroupId) { public List<ListClassifyVO> listAllClassifyByRank(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("listAllClassifyByRank"), bookGroupId); return this.getSqlSession().selectList(this.getStatement("listAllClassifyByRank"), bookGroupId);
} }
...@@ -197,6 +201,11 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp ...@@ -197,6 +201,11 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
public List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId) { public List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId) {
return this.getSqlSession().selectList(this.getStatement("getClassifyStatistics"), bookId); return this.getSqlSession().selectList(this.getStatement("getClassifyStatistics"), bookId);
} }
@Override
public Map<Long, BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds) {
return this.getSessionTemplate().selectMap(getStatement("getGroupClassifyCount"), bookIds,"bookId");
}
@Override @Override
public GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName) { public GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName) {
...@@ -218,4 +227,25 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp ...@@ -218,4 +227,25 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
paramMap.put("classifyIds", classifyIds); paramMap.put("classifyIds", classifyIds);
this.getSqlSession().update(this.getStatement("dragSortClassify"), paramMap); this.getSqlSession().update(this.getStatement("dragSortClassify"), paramMap);
} }
@Override
public void addClickClassify(Long wechatUserId, Long bookGroupId, Long classifyId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyId", classifyId);
paramMap.put("wechatUserId", wechatUserId);
paramMap.put("bookGroupId", bookGroupId);
this.getSqlSession().insert(this.getStatement("addClickClassify"), paramMap);
}
@Override
public Map<Long, ClickClassifyDTO> mapClickClassify(List<Long> classifyIds) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyIds", classifyIds);
return this.getSqlSession().selectMap(this.getStatement("mapClickClassify"), paramMap,"classifyId");
}
@Override
public List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("getClassifyIngoreDelete"), bookGroupId);
}
} }
...@@ -150,4 +150,11 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou ...@@ -150,4 +150,11 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
public Boolean getIsShowBookName(Long partyId) { public Boolean getIsShowBookName(Long partyId) {
return this.getSqlSession().selectOne(this.getStatement("getIsShowBookName"), partyId); return this.getSqlSession().selectOne(this.getStatement("getIsShowBookName"), partyId);
} }
@Override
public void deleteByBookGroupId(Long bookGroupId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookGroupId", bookGroupId);
super.getSqlSession().update(getStatement("deleteByBookGroupId"), paramMap);
}
} }
...@@ -6,6 +6,7 @@ import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO; ...@@ -6,6 +6,7 @@ import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO;
import com.pcloud.book.group.dao.GroupQrcodeDao; import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.*; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO; import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO; import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -197,4 +198,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou ...@@ -197,4 +198,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
getSessionTemplate().update(getStatement("updateRiddleOpenStatus"), map); getSessionTemplate().update(getStatement("updateRiddleOpenStatus"), map);
} }
public List<ClassifyQrcodeVO> getQrcodeByClassify(Long classifyId) {
return this.getSqlSession().selectList(this.getStatement("getQrcodeByClassify"), classifyId);
}
} }
...@@ -47,6 +47,11 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We ...@@ -47,6 +47,11 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We
} }
@Override @Override
public List<QrStatisticsVO> getQrStatisticsByVersion() {
return this.getSessionTemplate().selectList(this.getStatement("getQrStatisticsByVersion"));
}
@Override
public void updateStatusToError() { public void updateStatusToError() {
this.getSqlSession().update(this.getStatement("updateStatusToError")); this.getSqlSession().update(this.getStatement("updateStatusToError"));
} }
...@@ -118,6 +123,11 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We ...@@ -118,6 +123,11 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We
} }
@Override @Override
public List<QrStatisticsVO> getQrcodeCountByVersion() {
return this.getSqlSession().selectList(this.getStatement("getQrcodeCountByVersion"));
}
@Override
public Boolean checkExist(String weixinGroupId) { public Boolean checkExist(String weixinGroupId) {
return this.getSqlSession().selectOne(this.getStatement("checkExist"), weixinGroupId); return this.getSqlSession().selectOne(this.getStatement("checkExist"), weixinGroupId);
} }
......
...@@ -133,6 +133,11 @@ public class BookGroupDTO extends BaseDto { ...@@ -133,6 +133,11 @@ public class BookGroupDTO extends BaseDto {
private String bookName; private String bookName;
/**
* 编号
*/
private String bookNumber;
private String url; private String url;
private Long bookClockInfoId; private Long bookClockInfoId;
...@@ -364,6 +369,7 @@ public class BookGroupDTO extends BaseDto { ...@@ -364,6 +369,7 @@ public class BookGroupDTO extends BaseDto {
this.isShowBookName = isShowBookName; this.isShowBookName = isShowBookName;
} }
public Integer getJoinGroupType() { public Integer getJoinGroupType() {
return joinGroupType; return joinGroupType;
} }
...@@ -372,6 +378,14 @@ public class BookGroupDTO extends BaseDto { ...@@ -372,6 +378,14 @@ public class BookGroupDTO extends BaseDto {
this.joinGroupType = joinGroupType; this.joinGroupType = joinGroupType;
} }
public String getBookNumber() {
return bookNumber;
}
public void setBookNumber(String bookNumber) {
this.bookNumber = bookNumber;
}
@Override @Override
public String toString() { public String toString() {
return "BookGroupDTO{" + return "BookGroupDTO{" +
...@@ -399,10 +413,13 @@ public class BookGroupDTO extends BaseDto { ...@@ -399,10 +413,13 @@ public class BookGroupDTO extends BaseDto {
", bookImg='" + bookImg + '\'' + ", bookImg='" + bookImg + '\'' +
", isbn='" + isbn + '\'' + ", isbn='" + isbn + '\'' +
", bookName='" + bookName + '\'' + ", bookName='" + bookName + '\'' +
", bookNumber='" + bookNumber + '\'' +
", url='" + url + '\'' + ", url='" + url + '\'' +
", bookClockInfoId=" + bookClockInfoId + ", bookClockInfoId=" + bookClockInfoId +
", isShowBookName=" + isShowBookName + ", isShowBookName=" + isShowBookName +
", joinGroupType=" + joinGroupType + ", joinGroupType=" + joinGroupType +
"} " + super.toString(); "} " + super.toString();
} }
} }
\ No newline at end of file
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/22 21:49
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ClickClassifyDTO implements Serializable {
@ApiModelProperty("社群码标识")
private Long bookGroupId;
@ApiModelProperty("分类标识")
private Long classifyId;
@ApiModelProperty("点击次数")
private Long count;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
@Override
public String toString() {
return "ClickClassifyDTO{" +
"bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", count=" + count +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/8 21:39
*/
public class StatisticsIncomeDto implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4695716936925368521L;
/**
* 应用标识
*/
private Long appId;
/**
* 书刊标识
*/
private Long bookGroupId;
/**
* 应用名称
*/
private String appName;
/**
* 浏览量
*/
private Integer scanCounts;
/**
* 销售量
*/
private Integer saleCounts;
/**
* 销售额
*/
private BigDecimal saleMoney;
/**
* 收益额
*/
private BigDecimal income;
/**
* 商品标识
*/
private Long productId;
/**
* 商品名称
*/
private String productName;
/**
* 收益时间
*/
private String dateTime;
/**
* 子项
*/
private List<StatisticsIncomeDto> itemList;
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public Integer getScanCounts() {
return scanCounts;
}
public void setScanCounts(Integer scanCounts) {
this.scanCounts = scanCounts;
}
public Integer getSaleCounts() {
return saleCounts;
}
public void setSaleCounts(Integer saleCounts) {
this.saleCounts = saleCounts;
}
public BigDecimal getSaleMoney() {
return saleMoney;
}
public void setSaleMoney(BigDecimal saleMoney) {
this.saleMoney = saleMoney;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getDateTime() {
return dateTime;
}
public void setDateTime(String dateTime) {
this.dateTime = dateTime;
}
public List<StatisticsIncomeDto> getItemList() {
return itemList;
}
public void setItemList(List<StatisticsIncomeDto> itemList) {
this.itemList = itemList;
}
@Override
public String toString() {
return "StatisticsIncomeDto{" +
"appId=" + appId +
", bookGroupId=" + bookGroupId +
", appName='" + appName + '\'' +
", scanCounts=" + scanCounts +
", saleCounts=" + saleCounts +
", saleMoney=" + saleMoney +
", income=" + income +
", productId=" + productId +
", productName='" + productName + '\'' +
", dateTime='" + dateTime + '\'' +
", itemList=" + itemList +
'}';
}
}
\ No newline at end of file
...@@ -172,6 +172,7 @@ public interface BookGroupClassifyFacade { ...@@ -172,6 +172,7 @@ public interface BookGroupClassifyFacade {
@RequestParam(value = "keyword", required = false) @ApiParam("关键词") String keyword @RequestParam(value = "keyword", required = false) @ApiParam("关键词") String keyword
) throws BizException, PermissionException; ) throws BizException, PermissionException;
@ApiOperation("拖动排序") @ApiOperation("拖动排序")
@PostMapping("dragSortClassify") @PostMapping("dragSortClassify")
ResponseDto<?> dragSortClassify( ResponseDto<?> dragSortClassify(
...@@ -179,4 +180,20 @@ public interface BookGroupClassifyFacade { ...@@ -179,4 +180,20 @@ public interface BookGroupClassifyFacade {
@RequestBody List<Long> classifyIds @RequestBody List<Long> classifyIds
) throws BizException, PermissionException; ) throws BizException, PermissionException;
@ApiOperation("埋点记录点击分类次数")
@GetMapping("clickClassify")
ResponseDto<?> clickClassify(
@CookieValue("userinfo") @ApiParam("cookie信息") String userInfo,
@RequestParam("bookGroupId") @ApiParam("社群码id") Long bookGroupId,
@RequestParam("classifyId") @ApiParam("群分类id") Long classifyId) throws BizException, PermissionException;
@ApiOperation("获取所有群分类包括已删除的")
@GetMapping("getClassifyIngoreDelete")
ResponseDto<?> getClassifyIngoreDelete(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestParam("bookGroupId") @ApiParam("社群码id") Long bookGroupId) throws BizException, PermissionException;
} }
package com.pcloud.book.group.facade; package com.pcloud.book.group.facade;
import com.pcloud.book.group.entity.BookGroupClassify; import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.vo.*;
import com.pcloud.common.page.PageBeanNew;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -24,6 +26,8 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -24,6 +26,8 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
/** /**
* Description 社群书群二维码接口 * Description 社群书群二维码接口
* Created by PENG on 2019/4/17. * Created by PENG on 2019/4/17.
...@@ -276,6 +280,14 @@ public interface BookGroupFacade { ...@@ -276,6 +280,14 @@ public interface BookGroupFacade {
@RequestHeader("token") String token @RequestHeader("token") String token
) throws BizException, PermissionException, JsonParseException; ) throws BizException, PermissionException, JsonParseException;
@ApiOperation("删除社群码")
@GetMapping("deleteBookGroup")
ResponseDto<?> deleteBookGroup(
@RequestHeader("token") String token,
@RequestParam("bookGroupId") Long bookGroupId
) throws BizException, PermissionException, JsonParseException;
@ApiOperation("根据分类id获取个人二维码") @ApiOperation("根据分类id获取个人二维码")
@GetMapping("getOwnAltQrcodeInfoDTOByClassifyId") @GetMapping("getOwnAltQrcodeInfoDTOByClassifyId")
ResponseDto<?> getOwnAltQrcodeInfoDTOByClassifyId( ResponseDto<?> getOwnAltQrcodeInfoDTOByClassifyId(
...@@ -288,4 +300,70 @@ public interface BookGroupFacade { ...@@ -288,4 +300,70 @@ public interface BookGroupFacade {
ResponseDto<?> getAllLargeTemplet( ResponseDto<?> getAllLargeTemplet(
@RequestHeader("token") String token @RequestHeader("token") String token
) throws BizException, PermissionException, JsonParseException; ) throws BizException, PermissionException, JsonParseException;
@ApiOperation("获取社群书数据")
@RequestMapping(value = "getBookGroupStatisByBookGroupId",method = RequestMethod.GET)
ResponseDto<?> getBookGroupStatisByBookGroupId(@RequestParam("bookGroupId")Long bookGroupId) throws BizException;
@ApiOperation(value = "收益统计--pc", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "groupIncomeStaticParamVO", value = "GroupIncomeStaticParamVO", required = true, dataType = "GroupIncomeStaticParamVO", paramType = "body")
})
@RequestMapping(value ="getGroupIncomeStatic",method = RequestMethod.POST)
public ResponseDto<PageBeanNew<ResourcesStatisticVO>> getGroupIncomeStatic(@RequestHeader("token") String token,
@RequestBody GroupIncomeStaticParamVO groupIncomeStaticParamVO) throws BizException, PermissionException;
@ApiOperation(value = "社群码浏览趋势图--pc", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "groupScanTrendParamVO", value = "GroupScanTrendParamVO", required = true, dataType = "GroupScanTrendParamVO", paramType = "body")
})
@RequestMapping(value ="getGroupScanTrend",method = RequestMethod.POST)
public ResponseDto<List<GroupScanTrendVO>> getGroupScanTrend(@RequestHeader("token") String token,
@RequestBody GroupScanTrendParamVO groupScanTrendParamVO) throws BizException, PermissionException;
@ApiOperation(value = "社群码分类统计--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "currentPage", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "numPerPage", required = true, dataType = "Integer", paramType = "query")
})
@RequestMapping(value ="getClassifyStatistic",method = RequestMethod.GET)
public ResponseDto<?> getClassifyStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "currentPage",required = true) Integer currentPage,
@RequestParam(value = "numPerPage",required = true) Integer numPerPage) throws BizException, PermissionException;
@ApiOperation(value = "社群码分类下的微信群统计--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId", value = "classifyId", required = true, dataType = "Long", paramType = "query")
})
@RequestMapping(value ="getQrcodeStatistic",method = RequestMethod.GET)
public ResponseDto<?> getQrcodeStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws BizException, PermissionException;
@ApiOperation(value = "资源数据统计--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId",value = "classifyId",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "qrcodeId",value = "qrcodeId",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "type",value = "type",required = true,dataType = "String",paramType = "query")
})
@RequestMapping(value ="getTotalRescourceData",method = RequestMethod.GET)
public ResponseDto<?> getTotalRescourceData(@RequestHeader("token") String token, @RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "classifyId",required = false) Long classifyId, @RequestParam(value = "qrcodeId",required = false) Long qrcodeId,
@RequestParam("type") String type) throws BizException, PermissionException;
@ApiOperation(value = "社群码资源收益数据导出--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query")
})
@RequestMapping(value ="exportRescourceIncomeData",method = RequestMethod.GET)
public ResponseDto<?> exportRescourceIncomeData(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId) throws BizException, PermissionException;
} }
...@@ -35,6 +35,15 @@ public interface GroupQrcodeFacade { ...@@ -35,6 +35,15 @@ public interface GroupQrcodeFacade {
@RequestMapping(value = "listQrcodeByClassify", method = RequestMethod.POST) @RequestMapping(value = "listQrcodeByClassify", method = RequestMethod.POST)
ResponseDto<PageBeanNew> listQrcodeByClassify(@RequestHeader("token") String token, @RequestBody ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO) throws PermissionException; ResponseDto<PageBeanNew> listQrcodeByClassify(@RequestHeader("token") String token, @RequestBody ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO) throws PermissionException;
@ApiOperation(value = "根据分类获取分类下二维码----不分页", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId", value = "classifyId", dataType = "Long", paramType = "query")
})
@RequestMapping(value = "getQrcodeByClassify", method = RequestMethod.GET)
ResponseDto<?> getQrcodeByClassify(@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws PermissionException;
@ApiOperation(value = "修改微信群名称", httpMethod = "POST") @ApiOperation(value = "修改微信群名称", httpMethod = "POST")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"), @ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
......
...@@ -16,6 +16,8 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -16,6 +16,8 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
/** /**
* @author lily * @author lily
* @date 2019/4/26 15:10 * @date 2019/4/26 15:10
...@@ -38,4 +40,10 @@ public interface WeixinQrcodeFacade { ...@@ -38,4 +40,10 @@ public interface WeixinQrcodeFacade {
@GetMapping("getQrStatistics") @GetMapping("getQrStatistics")
ResponseDto<QrStatisticsVO> getQrStatistics(@RequestHeader("token") String token) ResponseDto<QrStatisticsVO> getQrStatistics(@RequestHeader("token") String token)
throws BizException, PermissionException; throws BizException, PermissionException;
@GetMapping("getQrStatisticsByVersion")
ResponseDto<List<QrStatisticsVO>> getQrStatisticsByVersion(@RequestHeader("token") String token)
throws BizException, PermissionException;
} }
...@@ -184,6 +184,7 @@ public class BookGroupClassifyFacadeImpl implements BookGroupClassifyFacade { ...@@ -184,6 +184,7 @@ public class BookGroupClassifyFacadeImpl implements BookGroupClassifyFacade {
return new ResponseDto<>(bookGroupClassifyBiz.listClassifyForLearningReport(currentPage,numPerPage,keyword,partyId)); return new ResponseDto<>(bookGroupClassifyBiz.listClassifyForLearningReport(currentPage,numPerPage,keyword,partyId));
} }
@ApiOperation("拖动排序") @ApiOperation("拖动排序")
@PostMapping("dragSortClassify") @PostMapping("dragSortClassify")
@Override @Override
...@@ -196,4 +197,23 @@ public class BookGroupClassifyFacadeImpl implements BookGroupClassifyFacade { ...@@ -196,4 +197,23 @@ public class BookGroupClassifyFacadeImpl implements BookGroupClassifyFacade {
return new ResponseDto<>(); return new ResponseDto<>();
} }
@Override
@GetMapping("clickClassify")
public ResponseDto<?> clickClassify(@CookieValue("userInfo") String userInfo, @RequestParam("bookGroupId") Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws BizException, PermissionException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
bookGroupClassifyBiz.clickClassify(wechatUserId,bookGroupId,classifyId);
return new ResponseDto<>();
}
@Override
@GetMapping("getClassifyIngoreDelete")
public ResponseDto<?> getClassifyIngoreDelete(@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
List<ListClassifyVO> classifyVOS = bookGroupClassifyBiz.getClassifyIngoreDelete(bookGroupId);
return new ResponseDto<>(classifyVOS);
}
} }
...@@ -17,7 +17,6 @@ import com.pcloud.common.permission.PermissionException; ...@@ -17,7 +17,6 @@ import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil; import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -32,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -32,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -397,6 +397,19 @@ public class BookGroupFacadeImpl implements BookGroupFacade { ...@@ -397,6 +397,19 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return new ResponseDto<>(bookGroupBiz.getIsShowBookName(partyId)); return new ResponseDto<>(bookGroupBiz.getIsShowBookName(partyId));
} }
@ApiOperation("删除社群码")
@GetMapping("deleteBookGroup")
@Override
public ResponseDto<?> deleteBookGroup(
@RequestHeader("token") String token,
@RequestParam("bookGroupId") Long bookGroupId
) throws BizException, PermissionException, JsonParseException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
bookGroupBiz.deleteBookGroup(bookGroupId);
return new ResponseDto<>();
}
@ApiOperation("根据分类id获取个人二维码") @ApiOperation("根据分类id获取个人二维码")
@GetMapping("getOwnAltQrcodeInfoDTOByClassifyId") @GetMapping("getOwnAltQrcodeInfoDTOByClassifyId")
@Override @Override
...@@ -421,5 +434,75 @@ public class BookGroupFacadeImpl implements BookGroupFacade { ...@@ -421,5 +434,75 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return new ResponseDto<>(bookGroupBiz.getAllLargTemplet()); return new ResponseDto<>(bookGroupBiz.getAllLargTemplet());
} }
@Override
@RequestMapping(value = "getBookGroupStatisByBookGroupId",method = RequestMethod.GET)
public ResponseDto<?> getBookGroupStatisByBookGroupId(@RequestParam("bookGroupId")Long bookGroupId) throws BizException {
return new ResponseDto<>(bookGroupBiz.getBookGroupStatisByBookGroupId(bookGroupId));
}
@Override
@RequestMapping(value ="getGroupIncomeStatic",method = RequestMethod.POST)
public ResponseDto<PageBeanNew<ResourcesStatisticVO>> getGroupIncomeStatic(@RequestHeader("token") String token,
@RequestBody GroupIncomeStaticParamVO groupIncomeStaticParamVO) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
PageBeanNew<ResourcesStatisticVO> groupIncomeStatic = bookGroupBiz.getGroupIncomeStatic(groupIncomeStaticParamVO, adviserId);
return new ResponseDto<>(groupIncomeStatic);
}
@Override
@RequestMapping(value ="getGroupScanTrend",method = RequestMethod.POST)
public ResponseDto<List<GroupScanTrendVO>> getGroupScanTrend(@RequestHeader("token") String token,
@RequestBody GroupScanTrendParamVO groupScanTrendParamVO) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
List<GroupScanTrendVO> groupScanTrend = bookGroupBiz.getGroupScanTrend(groupScanTrendParamVO, adviserId);
return new ResponseDto<>(groupScanTrend);
}
@Override
@RequestMapping(value ="getClassifyStatistic",method = RequestMethod.GET)
public ResponseDto<?> getClassifyStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "currentPage",required = true) Integer currentPage,
@RequestParam(value = "numPerPage",required = true) Integer numPerPage) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
PageBeanNew<GroupStatisticVO> groupQrcodeStatistic = bookGroupBiz.getClassifyStatistic(bookGroupId, adviserId,currentPage,numPerPage);
return new ResponseDto<>(groupQrcodeStatistic);
}
@Override
@RequestMapping(value ="getQrcodeStatistic",method = RequestMethod.GET)
public ResponseDto<?> getQrcodeStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
List<WxGroupStatisticVO> qrcodeStatistic = bookGroupBiz.getQrcodeStatistic(bookGroupId, classifyId, adviserId);
return new ResponseDto<>(qrcodeStatistic);
}
@Override
@RequestMapping(value ="getTotalRescourceData",method = RequestMethod.GET)
public ResponseDto<?> getTotalRescourceData(@RequestHeader("token") String token, @RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "classifyId",required = false) Long classifyId, @RequestParam(value = "qrcodeId",required = false) Long qrcodeId,
@RequestParam("type") String type) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
TotalRescourceDataVO totalRescourceData = bookGroupBiz.getTotalRescourceData(bookGroupId, adviserId, classifyId, qrcodeId, type);
return new ResponseDto<>(totalRescourceData);
}
@Override
@RequestMapping(value ="exportRescourceIncomeData",method = RequestMethod.GET)
public ResponseDto<?> exportRescourceIncomeData(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
Map<String, String> resultMap = bookGroupBiz.exportRescourceIncomeData(bookGroupId, adviserId);
return new ResponseDto<>(resultMap);
}
} }
...@@ -36,6 +36,8 @@ import java.util.Optional; ...@@ -36,6 +36,8 @@ import java.util.Optional;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
/** /**
* @author lily * @author lily
* @date 2019/4/19 15:36 * @date 2019/4/19 15:36
...@@ -73,6 +75,14 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade { ...@@ -73,6 +75,14 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade {
} }
@Override @Override
@RequestMapping(value = "getQrcodeByClassify", method = RequestMethod.GET)
public ResponseDto<?> getQrcodeByClassify(@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws PermissionException {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeBiz.getQrcodeByClassify(bookGroupId, classifyId);
return new ResponseDto<>(qrcodeByClassify);
}
@Override
@PostMapping("modifyWechatGroupName") @PostMapping("modifyWechatGroupName")
@ApiOperation("修改微信群名称") @ApiOperation("修改微信群名称")
public ResponseDto<?> modifyWechatGroupName(@RequestHeader("token") String token, @RequestBody WechatGroupNameVO wechatGroupNameVO) public ResponseDto<?> modifyWechatGroupName(@RequestHeader("token") String token, @RequestBody WechatGroupNameVO wechatGroupNameVO)
......
...@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
/** /**
* @author lily * @author lily
* @date 2019/4/26 15:10 * @date 2019/4/26 15:10
...@@ -44,4 +46,11 @@ public class WeixinQrcodeFacadeImpl implements WeixinQrcodeFacade { ...@@ -44,4 +46,11 @@ public class WeixinQrcodeFacadeImpl implements WeixinQrcodeFacade {
throws BizException { throws BizException {
return new ResponseDto<>(weixinQrcodeBiz.getQrStatistics()); return new ResponseDto<>(weixinQrcodeBiz.getQrStatistics());
} }
@Override
@GetMapping("getQrStatisticsByVision")
@ApiOperation("平台端按照版本获取二维码统计数据")
public ResponseDto<List<QrStatisticsVO>> getQrStatisticsByVersion(String token) throws BizException {
return new ResponseDto<>(weixinQrcodeBiz.getQrStatisticsByVersion());
}
} }
...@@ -43,6 +43,13 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService { ...@@ -43,6 +43,13 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
} }
@Override @Override
@PostMapping("getClassifyByIds")
public ResponseEntity<ResponseDto<Map<Long, String>>> getClassifyByIds(@RequestBody List<Long> weixinGroupClassifyPrimaryIds) {
Map<Long, String> groupClassifyMap = bookGroupClassifyBiz.getClassifyByIds(weixinGroupClassifyPrimaryIds);
return ResponseHandleUtil.toResponse(groupClassifyMap);
}
@Override
@PostMapping("listGroupQrcodeBaseInfo") @PostMapping("listGroupQrcodeBaseInfo")
public ResponseEntity<ResponseDto<Map<String, GroupQrcodeBaseDTO>>> listGroupQrcodeBaseInfo(@RequestBody List<String> weixinGroupIds) { public ResponseEntity<ResponseDto<Map<String, GroupQrcodeBaseDTO>>> listGroupQrcodeBaseInfo(@RequestBody List<String> weixinGroupIds) {
Map<String, GroupQrcodeBaseDTO> groupQrcodeMap = bookGroupClassifyBiz.listGroupQrcodeBaseInfo(weixinGroupIds); Map<String, GroupQrcodeBaseDTO> groupQrcodeMap = bookGroupClassifyBiz.listGroupQrcodeBaseInfo(weixinGroupIds);
...@@ -96,4 +103,11 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService { ...@@ -96,4 +103,11 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
public ResponseEntity<ResponseDto<BigDecimal>> getPayPrice(@RequestParam("qrcodeId") Long qrcodeId, @RequestParam("wxUserId") String wxUserId) { public ResponseEntity<ResponseDto<BigDecimal>> getPayPrice(@RequestParam("qrcodeId") Long qrcodeId, @RequestParam("wxUserId") String wxUserId) {
return ResponseHandleUtil.toResponse(bookGroupClassifyBiz.getPayPrice(qrcodeId, wxUserId)); return ResponseHandleUtil.toResponse(bookGroupClassifyBiz.getPayPrice(qrcodeId, wxUserId));
} }
@Override
@PostMapping("getGroupClassifyCount")
public ResponseEntity<ResponseDto<Map<Long, BookClassifyDTO>>> getGroupClassifyCount(@RequestBody List<Long> bookIds) {
Map<Long, BookClassifyDTO> groupClassifyCount = bookGroupClassifyBiz.getGroupClassifyCount(bookIds);
return ResponseHandleUtil.toResponse(groupClassifyCount);
}
} }
...@@ -3,11 +3,12 @@ package com.pcloud.book.group.service.impl; ...@@ -3,11 +3,12 @@ package com.pcloud.book.group.service.impl;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO; import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO; import com.pcloud.book.group.dto.GroupCipherDTO;
import com.pcloud.book.group.dto.GroupUseDTO; import com.pcloud.book.group.dto.GroupUseDTO;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import com.pcloud.book.group.dto.ResourceBrowseParamDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -88,6 +89,7 @@ public class BookGroupServiceImpl implements BookGroupService { ...@@ -88,6 +89,7 @@ public class BookGroupServiceImpl implements BookGroupService {
} }
@Override @Override
@RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST) @RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST)
public void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException { public void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException {
...@@ -131,4 +133,16 @@ public class BookGroupServiceImpl implements BookGroupService { ...@@ -131,4 +133,16 @@ public class BookGroupServiceImpl implements BookGroupService {
return ResponseHandleUtil.toResponse(bookGroupBiz.getJoinGroupCipher(cipher)); return ResponseHandleUtil.toResponse(bookGroupBiz.getJoinGroupCipher(cipher));
} }
/**
* @description 获取资源浏览数据
* @author 戴兴
* @date 2019/8/8 20:45
*/
@Override
@PostMapping("getResourcesBrowseCount")
public ResponseEntity<ResponseDto<Map<Long, Long>>> getResourcesBrowseCount(@RequestBody ResourceBrowseParamDto resourceBrowseParamDto) {
return ResponseHandleUtil.toResponse(bookGroupBiz.getResourcesBrowseCount(resourceBrowseParamDto));
}
} }
package com.pcloud.book.group.service.impl; package com.pcloud.book.group.service.impl;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.biz.WeixinQrcodeBiz; import com.pcloud.book.group.biz.WeixinQrcodeBiz;
import com.pcloud.book.group.dto.BookWxQrcodeDTO; import com.pcloud.book.group.dto.BookWxQrcodeDTO;
import com.pcloud.book.group.dto.SyncWeixinGroupIdDTO; import com.pcloud.book.group.dto.SyncWeixinGroupIdDTO;
...@@ -7,8 +8,10 @@ import com.pcloud.book.group.dto.UpdateQrDTO; ...@@ -7,8 +8,10 @@ import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.dto.WeixinQrcodeCountDTO; import com.pcloud.book.group.dto.WeixinQrcodeCountDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO; import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.service.WeixinQrcodeService; import com.pcloud.book.group.service.WeixinQrcodeService;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -35,6 +38,8 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService { ...@@ -35,6 +38,8 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService {
@Autowired @Autowired
private WeixinQrcodeBiz weixinQrcodeBiz; private WeixinQrcodeBiz weixinQrcodeBiz;
@Autowired
private GroupQrcodeBiz groupQrcodeBiz;
@Override @Override
@GetMapping("tenQuartz") @GetMapping("tenQuartz")
...@@ -117,4 +122,15 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService { ...@@ -117,4 +122,15 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService {
return ResponseHandleUtil.toResponse(weixinQrcodeBiz.getGroupVersion(wxGroupIds)); return ResponseHandleUtil.toResponse(weixinQrcodeBiz.getGroupVersion(wxGroupIds));
} }
@Override
@RequestMapping(value = "getWxGroupId", method = RequestMethod.GET)
public ResponseEntity<ResponseDto<String>> getWxGroupId(@RequestParam("classifyId") Long classifyId) {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeBiz.getQrcodeByClassify(null, classifyId);
String wxGroupId = null;
if (!ListUtils.isEmpty(qrcodeByClassify)){
wxGroupId = qrcodeByClassify.get(0).getWeixinGroupId();
}
return ResponseHandleUtil.toResponse(wxGroupId);
}
} }
...@@ -16,7 +16,6 @@ import com.pcloud.common.utils.ListUtils; ...@@ -16,7 +16,6 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.sdk.wxgroup.ChangeNameVO; import com.sdk.wxgroup.ChangeNameVO;
import com.sdk.wxgroup.QrcodeVO;
import com.sdk.wxgroup.SendArticleMessageVO; import com.sdk.wxgroup.SendArticleMessageVO;
import com.sdk.wxgroup.SendMessageTypeEnum; import com.sdk.wxgroup.SendMessageTypeEnum;
import com.sdk.wxgroup.SendPicMessageVO; import com.sdk.wxgroup.SendPicMessageVO;
...@@ -27,7 +26,11 @@ import org.apache.commons.lang3.StringUtils; ...@@ -27,7 +26,11 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.*; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* @author lily * @author lily
...@@ -37,11 +40,12 @@ public class SendWeixinRequestTools { ...@@ -37,11 +40,12 @@ public class SendWeixinRequestTools {
private static final Logger LOGGER = LoggerFactory.getLogger(SendWeixinRequestTools.class); private static final Logger LOGGER = LoggerFactory.getLogger(SendWeixinRequestTools.class);
@ParamLog("修改微信群名称") @ParamLog("修改微信群名称")
public static void changeGroupName(String robotWxId, String weixinGroupId, String groupName) { public static void changeGroupName(String robotWxId, String weixinGroupId, String groupName, String ip) {
ChangeNameVO changeNameVO = new ChangeNameVO(); ChangeNameVO changeNameVO = new ChangeNameVO();
changeNameVO.setAltId(robotWxId); changeNameVO.setAltId(robotWxId);
changeNameVO.setWxGroupId(weixinGroupId); changeNameVO.setWxGroupId(weixinGroupId);
changeNameVO.setName(groupName); changeNameVO.setName(groupName);
changeNameVO.setIp(ip);
try { try {
WxGroupSDK.changeGroupName(changeNameVO); WxGroupSDK.changeGroupName(changeNameVO);
} catch (Exception e) { } catch (Exception e) {
...@@ -273,11 +277,25 @@ public class SendWeixinRequestTools { ...@@ -273,11 +277,25 @@ public class SendWeixinRequestTools {
return resultUrl; return resultUrl;
} }
@ParamLog("欢迎语中推送关键词信息") @ParamLog("欢迎语中推送关键词信息")
public static void sendKeywordsInfo(List<KeywordDTO> keywords, String robotId, String toWxId, String ip){ public static void sendKeywordsInfo(List<KeywordDTO> keywords, String robotId, String weixinGroupId, String ip){
if (ListUtils.isEmpty(keywords)) { if (ListUtils.isEmpty(keywords)) {
return; return;
} }
final String content = processContent(keywords, robotId, weixinGroupId, ip);
sendTextMessage(content, robotId, weixinGroupId, ip);
}
@ParamLog("个人欢迎语中推送关键词信息")
public static void sendKeywordsInfoToSelf(List<KeywordDTO> keywords, String robotId, String toWxId, String ip){
if (ListUtils.isEmpty(keywords)) {
return;
}
final String content = processContent(keywords, robotId, toWxId, ip);
sendTextMessageToSelf(content, robotId, toWxId, ip);
}
private static String processContent(List<KeywordDTO> keywords, String robotId, String toWxId, String ip) {
StringBuilder content = new StringBuilder(); StringBuilder content = new StringBuilder();
for (int i = 0; i < keywords.size(); i++) { for (int i = 0; i < keywords.size(); i++) {
KeywordDTO keywordDTO = keywords.get(i); KeywordDTO keywordDTO = keywords.get(i);
...@@ -292,9 +310,7 @@ public class SendWeixinRequestTools { ...@@ -292,9 +310,7 @@ public class SendWeixinRequestTools {
content.append("\n"); content.append("\n");
} }
} }
// 1001282-施总需求,群不推送关键词,个人欢迎语推送关键词 return content.toString();
// sendTextMessage(content, robotId, weixinGroupId, ip);
sendTextMessageToSelf(content.toString(), robotId, toWxId, ip);
} }
private static void sendTextMessageToSelf(String content, String robotId, String toWxId, String ip){ private static void sendTextMessageToSelf(String content, String robotId, String toWxId, String ip){
......
...@@ -30,6 +30,9 @@ public class BookGroupClassifyVO { ...@@ -30,6 +30,9 @@ public class BookGroupClassifyVO {
@ApiModelProperty("群二维码名称") @ApiModelProperty("群二维码名称")
private String groupQrcodeName; private String groupQrcodeName;
@ApiModelProperty("群数量")
private Integer groupsCount;
@ApiModelProperty("群人数") @ApiModelProperty("群人数")
private Integer userNumber; private Integer userNumber;
...@@ -102,6 +105,14 @@ public class BookGroupClassifyVO { ...@@ -102,6 +105,14 @@ public class BookGroupClassifyVO {
this.groupQrcodeName = groupQrcodeName; this.groupQrcodeName = groupQrcodeName;
} }
public Integer getGroupsCount() {
return groupsCount;
}
public void setGroupsCount(Integer groupsCount) {
this.groupsCount = groupsCount;
}
public Integer getUserNumber() { public Integer getUserNumber() {
return userNumber; return userNumber;
} }
...@@ -175,6 +186,7 @@ public class BookGroupClassifyVO { ...@@ -175,6 +186,7 @@ public class BookGroupClassifyVO {
", classify='" + classify + '\'' + ", classify='" + classify + '\'' +
", bookGroupId='" + bookGroupId + '\'' + ", bookGroupId='" + bookGroupId + '\'' +
", groupQrcodeName='" + groupQrcodeName + '\'' + ", groupQrcodeName='" + groupQrcodeName + '\'' +
", groupsCount=" + groupsCount +
", userNumber=" + userNumber + ", userNumber=" + userNumber +
", weekActiveNumber=" + weekActiveNumber + ", weekActiveNumber=" + weekActiveNumber +
", proLabelId=" + proLabelId + ", proLabelId=" + proLabelId +
......
package com.pcloud.book.group.vo; package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -44,6 +46,13 @@ public class ClassifyQrcodeVO implements Serializable { ...@@ -44,6 +46,13 @@ public class ClassifyQrcodeVO implements Serializable {
@ApiModelProperty("关键词识别次数") @ApiModelProperty("关键词识别次数")
private Integer keywordCount; private Integer keywordCount;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("关键词识别次数")
private Date createdTime;
public String getWeixinGroupId() { public String getWeixinGroupId() {
return weixinGroupId; return weixinGroupId;
} }
...@@ -124,6 +133,18 @@ public class ClassifyQrcodeVO implements Serializable { ...@@ -124,6 +133,18 @@ public class ClassifyQrcodeVO implements Serializable {
this.keywordCount = keywordCount; this.keywordCount = keywordCount;
} }
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override @Override
public String toString() { public String toString() {
return "ClassifyQrcodeVO{" + return "ClassifyQrcodeVO{" +
...@@ -136,7 +157,8 @@ public class ClassifyQrcodeVO implements Serializable { ...@@ -136,7 +157,8 @@ public class ClassifyQrcodeVO implements Serializable {
", quitRate=" + quitRate + ", quitRate=" + quitRate +
", weixinQrcodeId=" + weixinQrcodeId + ", weixinQrcodeId=" + weixinQrcodeId +
", weixinGroupId='" + weixinGroupId + '\'' + ", weixinGroupId='" + weixinGroupId + '\'' +
", keywordCount='" + keywordCount + '\'' + ", keywordCount=" + keywordCount +
", createdTime=" + createdTime +
'}'; '}';
} }
} }
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 19:35
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupIncomeStaticParamVO implements Serializable {
private Long bookGroupId;
private Integer currentPage;
private Integer numPerPage;
private String type;
private Long classifyId;
private Long wxGroupId;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(Integer numPerPage) {
this.numPerPage = numPerPage;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(Long wxGroupId) {
this.wxGroupId = wxGroupId;
}
@Override
public String toString() {
return "GroupIncomeStaticParamVO{" +
"bookGroupId=" + bookGroupId +
", currentPage=" + currentPage +
", numPerPage=" + numPerPage +
", type=" + type +
", classifyId=" + classifyId +
", wxGroupId=" + wxGroupId +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 19:57
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupScanTrendParamVO implements Serializable {
private Long bookGroupId;
private Long classifyId;
private Long wxGroupId;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date startDate;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date endDate;
private Integer dayNum;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(Long wxGroupId) {
this.wxGroupId = wxGroupId;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Integer getDayNum() {
return dayNum;
}
public void setDayNum(Integer dayNum) {
this.dayNum = dayNum;
}
@Override
public String toString() {
return "GroupScanTrendParamVO{" +
"bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", wxGroupId=" + wxGroupId +
", startDate=" + startDate +
", endDate=" + endDate +
", dayNum=" + dayNum +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/26 9:05
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupScanTrendVO implements Serializable {
@JsonFormat(
pattern = "yyyy-MM-dd",
timezone = "GMT+8"
)
private Date date;
private Long buyCount;
private Long scanCount;
@JsonFormat(
pattern = "yyyy-MM-dd",
timezone = "GMT+8"
)
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Long getBuyCount() {
return buyCount;
}
public void setBuyCount(Long buyCount) {
this.buyCount = buyCount;
}
public Long getScanCount() {
return scanCount;
}
public void setScanCount(Long scanCount) {
this.scanCount = scanCount;
}
@Override
public String toString() {
return "GroupScanTrendVO{" +
"date=" + date +
", buyCount=" + buyCount +
", scanCount=" + scanCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/28 15:45
*/
public class GroupStatisticVO implements Serializable {
@ApiModelProperty("分类唯一标识")
private Long classifyId;
@ApiModelProperty("分类名称")
private String classifyName;
@ApiModelProperty("是否免费,1-免费 0-收费")
private Integer isFree;
@ApiModelProperty("价格")
private BigDecimal price;
@ApiModelProperty("点击人数")
private Long clickCount;
@ApiModelProperty("累计进群人数")
private Long inGroupPersonCount;
@ApiModelProperty("当前群人数")
private Long groupPersonCount;
@ApiModelProperty("收益")
private BigDecimal income;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createdTime;
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public String getClassifyName() {
return classifyName;
}
public void setClassifyName(String classifyName) {
this.classifyName = classifyName;
}
public Integer getIsFree() {
return isFree;
}
public void setIsFree(Integer isFree) {
this.isFree = isFree;
}
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
public Long getInGroupPersonCount() {
return inGroupPersonCount;
}
public void setInGroupPersonCount(Long inGroupPersonCount) {
this.inGroupPersonCount = inGroupPersonCount;
}
public Long getGroupPersonCount() {
return groupPersonCount;
}
public void setGroupPersonCount(Long groupPersonCount) {
this.groupPersonCount = groupPersonCount;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
@Override
public String toString() {
return "GroupStatisticVO{" +
"classifyId=" + classifyId +
", classifyName=" + classifyName +
", isFree=" + isFree +
", clickCount=" + clickCount +
", inGroupPersonCount=" + inGroupPersonCount +
", groupPersonCount=" + groupPersonCount +
", income=" + income +
", createdTime=" + createdTime +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo; package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -42,6 +44,13 @@ public class ListClassifyVO implements Serializable { ...@@ -42,6 +44,13 @@ public class ListClassifyVO implements Serializable {
@ApiModelProperty("排序") @ApiModelProperty("排序")
private Integer rank; private Integer rank;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("创建时间")
private Date createdTime;
public Integer getRank() { public Integer getRank() {
return rank; return rank;
} }
...@@ -114,9 +123,21 @@ public class ListClassifyVO implements Serializable { ...@@ -114,9 +123,21 @@ public class ListClassifyVO implements Serializable {
this.qrcodeNumber = qrcodeNumber; this.qrcodeNumber = qrcodeNumber;
} }
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override @Override
public String toString() { public String toString() {
return "ClassifyNameVO{" + return "ListClassifyVO{" +
"id=" + id + "id=" + id +
", classify='" + classify + '\'' + ", classify='" + classify + '\'' +
", classifyIntroduce='" + classifyIntroduce + '\'' + ", classifyIntroduce='" + classifyIntroduce + '\'' +
...@@ -125,6 +146,7 @@ public class ListClassifyVO implements Serializable { ...@@ -125,6 +146,7 @@ public class ListClassifyVO implements Serializable {
", qrcodeNumber=" + qrcodeNumber + ", qrcodeNumber=" + qrcodeNumber +
", userNumberTotal=" + userNumberTotal + ", userNumberTotal=" + userNumberTotal +
", rank=" + rank + ", rank=" + rank +
", createdTime=" + createdTime +
'}'; '}';
} }
} }
package com.pcloud.book.group.vo; package com.pcloud.book.group.vo;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/** /**
* @author 戴兴 * @author 戴兴
* @description TODO * @description TODO
* @date 2019/2/28 18:15 * @date 2019/2/28 18:15
*/ */
@Data
public class QrStatisticsVO implements Serializable { public class QrStatisticsVO implements Serializable {
@ApiModelProperty("所有个数") @ApiModelProperty("所有个数")
...@@ -20,36 +23,6 @@ public class QrStatisticsVO implements Serializable { ...@@ -20,36 +23,6 @@ public class QrStatisticsVO implements Serializable {
@ApiModelProperty("未使用的个数") @ApiModelProperty("未使用的个数")
private Integer notUseCount; private Integer notUseCount;
public Integer getAllCount() { @ApiModelProperty("QR版本")
return allCount; private Integer version;
}
public void setAllCount(Integer allCount) {
this.allCount = allCount;
}
public Integer getInUseCount() {
return inUseCount;
}
public void setInUseCount(Integer inUseCount) {
this.inUseCount = inUseCount;
}
public Integer getNotUseCount() {
return notUseCount;
}
public void setNotUseCount(Integer notUseCount) {
this.notUseCount = notUseCount;
}
@Override
public String toString() {
return "QrStatisticsVO{" +
"allCount=" + allCount +
", inUseCount=" + inUseCount +
", notUseCount=" + notUseCount +
'}';
}
} }
\ No newline at end of file
package com.pcloud.book.group.vo;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/27 17:19
*/
public class ResourceClickVO implements Serializable {
private Long rescourceId;
private Long clickCount;
public Long getRescourceId() {
return rescourceId;
}
public void setRescourceId(Long rescourceId) {
this.rescourceId = rescourceId;
}
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
@Override
public String toString() {
return "ResourceClickVO{" +
"rescourceId=" + rescourceId +
", clickCount=" + clickCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 19:01
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResourcesStatisticVO implements Serializable {
private Long rescourceId;
private String rescourceName;
private String type;
private Long browseCount;
private Long saleCount;
private BigDecimal totalSale;
private BigDecimal totalIncome;
public Long getRescourceId() {
return rescourceId;
}
public void setRescourceId(Long rescourceId) {
this.rescourceId = rescourceId;
}
public String getRescourceName() {
return rescourceName;
}
public void setRescourceName(String rescourceName) {
this.rescourceName = rescourceName;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Long getBrowseCount() {
return browseCount;
}
public void setBrowseCount(Long browseCount) {
this.browseCount = browseCount;
}
public Long getSaleCount() {
return saleCount;
}
public void setSaleCount(Long saleCount) {
this.saleCount = saleCount;
}
public BigDecimal getTotalSale() {
return totalSale;
}
public void setTotalSale(BigDecimal totalSale) {
this.totalSale = totalSale;
}
public BigDecimal getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(BigDecimal totalIncome) {
this.totalIncome = totalIncome;
}
@Override
public String toString() {
return "ResourcesStatisticVO{" +
"rescourceId='" + rescourceId + '\'' +
", rescourceName=" + rescourceName +
", type='" + type + '\'' +
", browseCount=" + browseCount +
", saleCount=" + saleCount +
", totalSale=" + totalSale +
", totalIncome=" + totalIncome +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/28 16:16
*/
public class TotalRescourceDataVO implements Serializable {
private Long clickCount;
private BigDecimal totalSale;
private BigDecimal totalIncome;
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
public BigDecimal getTotalSale() {
return totalSale;
}
public void setTotalSale(BigDecimal totalSale) {
this.totalSale = totalSale;
}
public BigDecimal getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(BigDecimal totalIncome) {
this.totalIncome = totalIncome;
}
@Override
public String toString() {
return "TotalRescourceDataVO{" +
"clickCount=" + clickCount +
", totalSale=" + totalSale +
", totalIncome=" + totalIncome +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/28 15:47
*/
public class WxGroupStatisticVO implements Serializable {
private Long qrcodeId;
private String wxGroupName;
private Long inGroupPersonCount;
private Long groupPersonCount;
private BigDecimal income;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createdTime;
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public String getWxGroupName() {
return wxGroupName;
}
public void setWxGroupName(String wxGroupName) {
this.wxGroupName = wxGroupName;
}
public Long getInGroupPersonCount() {
return inGroupPersonCount;
}
public void setInGroupPersonCount(Long inGroupPersonCount) {
this.inGroupPersonCount = inGroupPersonCount;
}
public Long getGroupPersonCount() {
return groupPersonCount;
}
public void setGroupPersonCount(Long groupPersonCount) {
this.groupPersonCount = groupPersonCount;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "WxGroupStatisticVO{" +
"qrcodeId=" + qrcodeId +
", wxGroupName='" + wxGroupName + '\'' +
", inGroupPersonCount=" + inGroupPersonCount +
", groupPersonCount=" + groupPersonCount +
", income=" + income +
", createdTime=" + createdTime +
'}';
}
}
\ No newline at end of file
...@@ -15,11 +15,7 @@ import com.pcloud.book.group.dao.BookGroupClassifyDao; ...@@ -15,11 +15,7 @@ import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao; import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.GroupQrcodeDao; import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dao.JoinGroupCipherDao; import com.pcloud.book.group.dao.JoinGroupCipherDao;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.JoinGroupCipherDTO;
import com.pcloud.book.group.dto.PushAddUserMessageDTO;
import com.pcloud.book.group.entity.AppTouchRecord; import com.pcloud.book.group.entity.AppTouchRecord;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.enums.TouchTypeEnum; import com.pcloud.book.group.enums.TouchTypeEnum;
...@@ -42,6 +38,8 @@ import com.pcloud.book.keywords.vo.ReplyMessageVO; ...@@ -42,6 +38,8 @@ import com.pcloud.book.keywords.vo.ReplyMessageVO;
import com.pcloud.book.keywords.vo.SetGuideVO; import com.pcloud.book.keywords.vo.SetGuideVO;
import com.pcloud.book.keywords.vo.UpdateGuideVO; import com.pcloud.book.keywords.vo.UpdateGuideVO;
import com.pcloud.book.util.properties.BookProps; import com.pcloud.book.util.properties.BookProps;
import com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto; import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
...@@ -106,6 +104,8 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -106,6 +104,8 @@ public class BookGuideBizImpl implements BookGuideBiz {
private JoinGroupCipherDao joinGroupCipherDao; private JoinGroupCipherDao joinGroupCipherDao;
@Autowired @Autowired
private KeywordDao keywordDao; private KeywordDao keywordDao;
@Autowired
private WeixinClockGroupClassifyDao weixinClockGroupClassifyDao;
@ParamLog("同意加好友发送欢迎语") @ParamLog("同意加好友发送欢迎语")
@Override @Override
...@@ -144,7 +144,7 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -144,7 +144,7 @@ public class BookGuideBizImpl implements BookGuideBiz {
//发主打资源 //发主打资源
sendMainKeyword(keywords,agreeAddUserDTO,dto,wxGroupId); sendMainKeyword(keywords,agreeAddUserDTO,dto,wxGroupId);
//发关键词列表 //发关键词列表
SendWeixinRequestTools.sendKeywordsInfo(keywords, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp()); SendWeixinRequestTools.sendKeywordsInfoToSelf(keywords, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp());
// 拉群 // 拉群
final Integer peopleCounts = WxGroupSDK.getPeopleCounts(wxGroupId, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getIp()); final Integer peopleCounts = WxGroupSDK.getPeopleCounts(wxGroupId, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getIp());
// 邀请好友进群有次数限制,目前测试为每天只能拉30-40人就操作频繁,所以在此加判断,超过30人或者群人数超过30人就发送邀请链接 // 邀请好友进群有次数限制,目前测试为每天只能拉30-40人就操作频繁,所以在此加判断,超过30人或者群人数超过30人就发送邀请链接
...@@ -161,6 +161,7 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -161,6 +161,7 @@ public class BookGuideBizImpl implements BookGuideBiz {
sendGroupInviteVO.setAltId(agreeAddUserDTO.getRobotWxId()); sendGroupInviteVO.setAltId(agreeAddUserDTO.getRobotWxId());
sendGroupInviteVO.setWxId(agreeAddUserDTO.getUserWxId()); sendGroupInviteVO.setWxId(agreeAddUserDTO.getUserWxId());
sendGroupInviteVO.setWxGroupId(wxGroupId); sendGroupInviteVO.setWxGroupId(wxGroupId);
sendGroupInviteVO.setIp(agreeAddUserDTO.getIp());
WxGroupSDK.sendGroupInvite(sendGroupInviteVO); WxGroupSDK.sendGroupInvite(sendGroupInviteVO);
log.info("[同意加好友发送欢迎语] 发送进群链接 sendGroupInviteVO:{}", sendGroupInviteVO); log.info("[同意加好友发送欢迎语] 发送进群链接 sendGroupInviteVO:{}", sendGroupInviteVO);
// 进群之后更新群qrCodeId // 进群之后更新群qrCodeId
...@@ -366,14 +367,16 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -366,14 +367,16 @@ public class BookGuideBizImpl implements BookGuideBiz {
//获取公众号基本信息 //获取公众号基本信息
AccountSettingDto wechatInfo = qrcodeSceneConsr.getWechatInfo(classifyQrcodeInfo.getChannelId()); AccountSettingDto wechatInfo = qrcodeSceneConsr.getWechatInfo(classifyQrcodeInfo.getChannelId());
//获取关键词信息(改成10个了) 刘娜需求 1001282 群不推送关键词 //获取关键词信息(改成10个了) 刘娜需求 1001282 群不推送关键词
// List<KeywordDTO> keywords = bookKeywordBiz.listFiveKeyword(classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getBookGroupId()); List<KeywordDTO> keywords = bookKeywordBiz.listFiveKeyword(classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getBookGroupId());
// Boolean isHaveKeywords = !ListUtils.isEmpty(keywords); Boolean isHaveKeywords = !ListUtils.isEmpty(keywords);
final Boolean groupRobot = wechatGroupConsr.isGroupRobot(robotId);
log.info("[wechatGroupConsr.isGroupRobot] robotId:{} groupRobot:{}", robotId, groupRobot);
if (ListUtils.isEmpty(replyMessages)) { if (ListUtils.isEmpty(replyMessages)) {
//获取群名称 //获取群名称
GroupQrcodeBaseInfoVO groupInfo = groupQrcodeBiz.getBaseById(classifyQrcodeInfo.getGroupQrcodeId()); GroupQrcodeBaseInfoVO groupInfo = groupQrcodeBiz.getBaseById(classifyQrcodeInfo.getGroupQrcodeId());
//推送消息 刘娜需求 1001282 群不推送关键词 //推送消息 刘娜需求 1001282 群不推送关键词
// SendWeixinRequestTools.sendDefaultMessage(groupInfo == null ? "" : groupInfo.getGroupName(), robotId, weixinGroupId, isHaveKeywords, pushAddUserMessageDTO.getIp()); // 若非之前的机器人则不回复普通关键词
SendWeixinRequestTools.sendDefaultMessage(groupInfo == null ? "" : groupInfo.getGroupName(), robotId, weixinGroupId, false, pushAddUserMessageDTO.getIp()); SendWeixinRequestTools.sendDefaultMessage(groupInfo == null ? "" : groupInfo.getGroupName(), robotId, weixinGroupId, isHaveKeywords, pushAddUserMessageDTO.getIp());
} else { } else {
//处理链接 //处理链接
handleUrl(replyMessages, wechatInfo, classifyQrcodeInfo); handleUrl(replyMessages, wechatInfo, classifyQrcodeInfo);
...@@ -383,7 +386,9 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -383,7 +386,9 @@ public class BookGuideBizImpl implements BookGuideBiz {
addGuideAppTouchRecord(replyMessages,weixinGroupId,classifyQrcodeInfo.getBookGroupId(),classifyQrcodeInfo.getClassifyId()); addGuideAppTouchRecord(replyMessages,weixinGroupId,classifyQrcodeInfo.getBookGroupId(),classifyQrcodeInfo.getClassifyId());
} }
//获取关键词信息(改成10个了)刘娜需求 1001282 群不推送关键词 //获取关键词信息(改成10个了)刘娜需求 1001282 群不推送关键词
// SendWeixinRequestTools.sendKeywordsInfo(keywords, robotId, weixinGroupId, pushAddUserMessageDTO.getIp()); if (groupRobot) {
SendWeixinRequestTools.sendKeywordsInfo(keywords, robotId, weixinGroupId, pushAddUserMessageDTO.getIp());
}
//如果设置了群学习报告,加一个群学习报告的关键词 //如果设置了群学习报告,加一个群学习报告的关键词
pushLearningReport(classifyQrcodeInfo,robotId, weixinGroupId, pushAddUserMessageDTO.getIp()); pushLearningReport(classifyQrcodeInfo,robotId, weixinGroupId, pushAddUserMessageDTO.getIp());
if (bookGuide != null && bookGuide.getIsRecommend() != null && bookGuide.getIsRecommend() == 1) { if (bookGuide != null && bookGuide.getIsRecommend() != null && bookGuide.getIsRecommend() == 1) {
...@@ -391,7 +396,7 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -391,7 +396,7 @@ public class BookGuideBizImpl implements BookGuideBiz {
SendWeixinRequestTools.sendAccountMessage(weixinGroupId, bookGuide.getRecommendLanguage(), robotId, wechatInfo, pushAddUserMessageDTO.getIp()); SendWeixinRequestTools.sendAccountMessage(weixinGroupId, bookGuide.getRecommendLanguage(), robotId, wechatInfo, pushAddUserMessageDTO.getIp());
} }
//校验该群是否与微信群打卡有关 //校验该群是否与微信群打卡有关
List<Long> bookClockInfoIdList = bookClockCheck.checkGroupIsClock(classifyQrcodeInfo); /*List<Long> bookClockInfoIdList = bookClockCheck.checkGroupIsClock(classifyQrcodeInfo);
if(!ListUtils.isEmpty(bookClockInfoIdList)){ if(!ListUtils.isEmpty(bookClockInfoIdList)){
Map<String,Object> paramMap = new HashMap<>(); Map<String,Object> paramMap = new HashMap<>();
int i = 0; int i = 0;
...@@ -414,13 +419,14 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -414,13 +419,14 @@ public class BookGuideBizImpl implements BookGuideBiz {
} }
} }
} }*/
} }
@ParamLog("推关学习报告/猜谜语关键词消息") @ParamLog("推关学习报告/猜谜语关键词消息")
private void pushLearningReport(GroupClassifyQrcodeDTO classifyQrcodeInfo, String robotId, String weixinGroupId, String ip) { private void pushLearningReport(GroupClassifyQrcodeDTO classifyQrcodeInfo, String robotId, String weixinGroupId, String ip) {
Boolean reportOpen = false; Boolean reportOpen = false;
Boolean riddleOpen = false; Boolean riddleOpen = false;
Boolean clockOpen = false;
if (classifyQrcodeInfo.getHasOpenLearningReport() != null && classifyQrcodeInfo.getHasOpenLearningReport()) { if (classifyQrcodeInfo.getHasOpenLearningReport() != null && classifyQrcodeInfo.getHasOpenLearningReport()) {
reportOpen = true; reportOpen = true;
} }
...@@ -428,9 +434,25 @@ public class BookGuideBizImpl implements BookGuideBiz { ...@@ -428,9 +434,25 @@ public class BookGuideBizImpl implements BookGuideBiz {
if (null != groupQrcode && groupQrcode.getRiddleOpen()) { if (null != groupQrcode && groupQrcode.getRiddleOpen()) {
riddleOpen = true; riddleOpen = true;
} }
if (reportOpen && riddleOpen) { WeixinClockDto weixinClockDto = weixinClockGroupClassifyDao.getClockBaseInfoByClassify(classifyQrcodeInfo.getClassifyId());
if (null != weixinClockDto && !StringUtil.isEmpty(weixinClockDto.getClockGuide()) && !StringUtil.isEmpty(weixinClockDto.getClockKeyword())) {
clockOpen = true;
}
if (reportOpen && riddleOpen && clockOpen) {
SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值\n" +
"关键词【猜谜语】\n 猜谜语,大家一起玩,看谁666\n" +
"关键词【" + weixinClockDto.getClockKeyword() + "】\n " + weixinClockDto.getClockGuide(), robotId, weixinGroupId, ip);
} else if (reportOpen && riddleOpen) {
SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值\n" + SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值\n" +
"关键词【猜谜语】\n 猜谜语,大家一起玩,看谁666", robotId, weixinGroupId, ip); "关键词【猜谜语】\n 猜谜语,大家一起玩,看谁666", robotId, weixinGroupId, ip);
} else if (reportOpen && clockOpen) {
SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值\n" +
"关键词【" + weixinClockDto.getClockKeyword() + "】\n " + weixinClockDto.getClockGuide(), robotId, weixinGroupId, ip);
} else if (riddleOpen && clockOpen) {
SendWeixinRequestTools.sendTextMessage("关键词【猜谜语】\n 猜谜语,大家一起玩,看谁666" +
"关键词【" + weixinClockDto.getClockKeyword() + "】\n " + weixinClockDto.getClockGuide(), robotId, weixinGroupId, ip);
} else if (clockOpen) {
SendWeixinRequestTools.sendTextMessage("关键词【" + weixinClockDto.getClockKeyword() + "】\n " + weixinClockDto.getClockGuide(), robotId, weixinGroupId, ip);
} else if (reportOpen) { } else if (reportOpen) {
SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值", robotId, weixinGroupId, ip); SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值", robotId, weixinGroupId, ip);
} else if (riddleOpen) { } else if (riddleOpen) {
......
...@@ -38,7 +38,14 @@ import com.pcloud.book.keywords.entity.BookKeyword; ...@@ -38,7 +38,14 @@ import com.pcloud.book.keywords.entity.BookKeyword;
import com.pcloud.book.keywords.entity.BookKeywordRecord; import com.pcloud.book.keywords.entity.BookKeywordRecord;
import com.pcloud.book.keywords.entity.Keyword; import com.pcloud.book.keywords.entity.Keyword;
import com.pcloud.book.keywords.enums.ReplyTypeEnum; import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.keywords.vo.*; import com.pcloud.book.keywords.vo.DeleteKeywordVO;
import com.pcloud.book.keywords.vo.KeywordVO;
import com.pcloud.book.keywords.vo.ListKeywordParam;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.keywords.vo.QrWeixinParam;
import com.pcloud.book.keywords.vo.SetKeywordVO;
import com.pcloud.book.keywords.vo.SetRankVO;
import com.pcloud.book.keywords.vo.UpdateKeywordVO;
import com.pcloud.channelcenter.base.constants.ChannelEnum; import com.pcloud.channelcenter.base.constants.ChannelEnum;
import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService; import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.channelcenter.qrcode.vo.MessageBookVO; import com.pcloud.channelcenter.qrcode.vo.MessageBookVO;
...@@ -71,7 +78,6 @@ import java.util.ArrayList; ...@@ -71,7 +78,6 @@ import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
...@@ -480,13 +486,15 @@ public class BookKeywordBizImpl implements BookKeywordBiz { ...@@ -480,13 +486,15 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
// 处理链接地址 // 处理链接地址
Long classifyId = keywordClassifyIdMap.get(replyKeywordDTO.getKeywordId()); Long classifyId = keywordClassifyIdMap.get(replyKeywordDTO.getKeywordId());
final GroupClassifyQrcodeDTO dto = classifyMap.get(classifyId); final GroupClassifyQrcodeDTO dto = classifyMap.get(classifyId);
if(null == dto) {
log.info("[关键词消息回复] 分类信息为空 replyKeywordDTO:{}; classifyMap:{}", replyKeywordDTO, classifyMap);
continue;
}
final boolean isApp = ReplyTypeEnum.APP.value.equals(replyKeywordDTO.getReplyType());
final boolean isLink = ReplyTypeEnum.LINK.value.equals(replyKeywordDTO.getReplyType());
Long qrcodeId = classifyToQrcodeMap.get(dto.getClassifyId()); Long qrcodeId = classifyToQrcodeMap.get(dto.getClassifyId());
GroupQrcodeBaseInfoVO qrcodeInfo = groupQrcodeDao.getBaseById(qrcodeId); GroupQrcodeBaseInfoVO qrcodeInfo = groupQrcodeDao.getBaseById(qrcodeId);
if (ReplyTypeEnum.APP.value.equals(replyKeywordDTO.getReplyType()) || ReplyTypeEnum.LINK.value.equals(replyKeywordDTO.getReplyType())) { if (isApp || isLink) {
if(null == dto) {
log.info("[关键词消息回复] 分类信息为空 replyKeywordDTO:{}; classifyMap:{}", replyKeywordDTO, classifyMap);
continue;
}
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(dto.getChannelId()); AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(dto.getChannelId());
String linkUrl = SendWeixinRequestTools.splitUrlNew(accountSettingDto, replyKeywordDTO.getLinkUrl(), dto.getBookGroupId(), dto.getClassifyId(), qrcodeId); String linkUrl = SendWeixinRequestTools.splitUrlNew(accountSettingDto, replyKeywordDTO.getLinkUrl(), dto.getBookGroupId(), dto.getClassifyId(), qrcodeId);
replyKeywordDTO.setLinkUrl(linkUrl); replyKeywordDTO.setLinkUrl(linkUrl);
...@@ -523,7 +531,6 @@ public class BookKeywordBizImpl implements BookKeywordBiz { ...@@ -523,7 +531,6 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
sb.append(dto.getKeywords()).append(":").append(dto.getContent()).append("\n"); sb.append(dto.getKeywords()).append(":").append(dto.getContent()).append("\n");
} else if (ReplyTypeEnum.IMAGE.value.equals(dto.getReplyType())) { } else if (ReplyTypeEnum.IMAGE.value.equals(dto.getReplyType())) {
SendWeixinRequestTools.sendKeywordMessage(dto, robotId, userWxId, ip, code); SendWeixinRequestTools.sendKeywordMessage(dto, robotId, userWxId, ip, code);
continue;
} }
} }
d.setContent(sb.toString()); d.setContent(sb.toString());
...@@ -579,7 +586,9 @@ public class BookKeywordBizImpl implements BookKeywordBiz { ...@@ -579,7 +586,9 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
} }
log.info("[关键词回复原始数据] : sendKeywordMessage replyKeywordDTO :{}, robotId:{}, weixinGroupId:{}", replyKeywordDTO, robotId, weixinGroupId); log.info("[关键词回复原始数据] : sendKeywordMessage replyKeywordDTO :{}, robotId:{}, weixinGroupId:{}", replyKeywordDTO, robotId, weixinGroupId);
// 处理链接地址 // 处理链接地址
if (ReplyTypeEnum.APP.value.equals(replyKeywordDTO.getReplyType()) || ReplyTypeEnum.LINK.value.equals(replyKeywordDTO.getReplyType())) { final boolean isApp = ReplyTypeEnum.APP.value.equals(replyKeywordDTO.getReplyType());
final boolean isLink = ReplyTypeEnum.LINK.value.equals(replyKeywordDTO.getReplyType());
if (isApp || isLink) {
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(classifyQrcodeInfo.getChannelId()); AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(classifyQrcodeInfo.getChannelId());
String linkUrl = SendWeixinRequestTools.splitUrlNew(accountSettingDto, replyKeywordDTO.getLinkUrl(), classifyQrcodeInfo.getBookGroupId(), classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getGroupQrcodeId()); String linkUrl = SendWeixinRequestTools.splitUrlNew(accountSettingDto, replyKeywordDTO.getLinkUrl(), classifyQrcodeInfo.getBookGroupId(), classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getGroupQrcodeId());
replyKeywordDTO.setLinkUrl(linkUrl); replyKeywordDTO.setLinkUrl(linkUrl);
......
...@@ -48,4 +48,10 @@ public class ReplyKeywordDTO implements Serializable { ...@@ -48,4 +48,10 @@ public class ReplyKeywordDTO implements Serializable {
@ApiModelProperty("短链接地址") @ApiModelProperty("短链接地址")
private String shortLinkUrl; private String shortLinkUrl;
@ApiModelProperty("应用/作品id")
private Long serveId;
@ApiModelProperty("应用/作品")
private String serveType;
} }
...@@ -75,4 +75,9 @@ public class MQTopicConumer { ...@@ -75,4 +75,9 @@ public class MQTopicConumer {
*/ */
public static final String WX_AGREE_ADD_USER = PREFIX + MQTopicProducer.WX_AGREE_ADD_USER; public static final String WX_AGREE_ADD_USER = PREFIX + MQTopicProducer.WX_AGREE_ADD_USER;
/**
* 微信群微信ID和微信用户ID绑定
*/
public static final String CONSUMER_WXGROUP_USER_BIND = PREFIX + MQTopicProducer.WXGROUP_USER_BIND;
} }
package com.pcloud.book.mq.topic;
/**
* @author 杨涛
* @description 绑定
* @date 2019/8/23 18:48
*/
import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.book.weixinclock.biz.WeixinClockBiz;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.wechat.entity.WechatGroupUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = MQTopicConumer.CONSUMER_WXGROUP_USER_BIND)
public class ReaderCenterBindInfoListener {
private static final Logger LOGGER = LoggerFactory.getLogger(ReaderCenterBindInfoListener.class);
@Autowired
private WeixinClockBiz weixinClockBiz;
@RabbitHandler
@ParamLog("接收到微信用户绑定TOPIC")
public void process(WechatGroupUser wechatGroupUser) {
try {
if (null != wechatGroupUser && null != wechatGroupUser.getWechatUserId() && !StringUtil.isEmpty(wechatGroupUser.getWxUserId())) {
weixinClockBiz.receiveWxGroupUserBindTopic(wechatGroupUser);
}
} catch (Exception e) {
LOGGER.error("接收到微信用户绑定TOPIC,JMS异常+++++" + e.getMessage(), e);
}
}
}
...@@ -7,13 +7,13 @@ import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; ...@@ -7,13 +7,13 @@ import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.keywords.biz.BookKeywordBiz; import com.pcloud.book.keywords.biz.BookKeywordBiz;
import com.pcloud.book.mq.config.MQTopicConumer; import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.book.riddle.biz.RiddleRecordBiz; import com.pcloud.book.riddle.biz.RiddleRecordBiz;
import com.pcloud.book.weixinclock.biz.WeixinClockBiz;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.message.dto.SendTextDTO; import com.pcloud.wechatgroup.message.dto.SendTextDTO;
import com.sdk.wxgroup.SendMessageTypeEnum; import com.sdk.wxgroup.SendMessageTypeEnum;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitHandler;
...@@ -43,6 +43,8 @@ public class WxGroupSendTextListener { ...@@ -43,6 +43,8 @@ public class WxGroupSendTextListener {
private BookClockCheck bookClockCheck; private BookClockCheck bookClockCheck;
@Autowired @Autowired
private RiddleRecordBiz riddleRecordBiz; private RiddleRecordBiz riddleRecordBiz;
@Autowired
private WeixinClockBiz weixinClockBiz;
/** /**
* 接收微信用户进群消息 * 接收微信用户进群消息
...@@ -57,10 +59,10 @@ public class WxGroupSendTextListener { ...@@ -57,10 +59,10 @@ public class WxGroupSendTextListener {
//校验是否机器人账号 //校验是否机器人账号
List<String> allRobotWxIds = wechatGroupConsr.listAllRobotWxId(); List<String> allRobotWxIds = wechatGroupConsr.listAllRobotWxId();
if (!ListUtils.isEmpty(allRobotWxIds) && !allRobotWxIds.contains(wechatUserId) && !StringUtil.isEmpty(sendTextDTO.getTextContent())) { if (!ListUtils.isEmpty(allRobotWxIds) && !allRobotWxIds.contains(wechatUserId) && !StringUtil.isEmpty(sendTextDTO.getTextContent())) {
BookClockInfoDTO bookClockInfoDTO = bookClockCheck.checkKeywordIsClock(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId()); Boolean flag = weixinClockBiz.checkWeixinClockKeyword(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId());
if(null != bookClockInfoDTO && SendMessageTypeEnum.GROUP.getCode().equals(sendTextDTO.getCode())){ if(flag && SendMessageTypeEnum.GROUP.getCode().equals(sendTextDTO.getCode())){
bookClockKeywordBiz.sendKeywordMessage(bookClockInfoDTO, wechatUserId,sendTextDTO.getWechatGroupId(),sendTextDTO.getWxId(),sendTextDTO.getIp()); weixinClockBiz.sendKeywordMessage(sendTextDTO.getTextContent().trim(), wechatUserId, sendTextDTO.getWechatGroupId(), sendTextDTO.getWxId(), sendTextDTO.getIp());
} else{ } else {
final long l = System.currentTimeMillis(); final long l = System.currentTimeMillis();
bookKeywordBiz.sendKeywordMessage(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId(), wechatUserId, sendTextDTO.getWxId(), sendTextDTO.getIp(), sendTextDTO.getCode()); bookKeywordBiz.sendKeywordMessage(sendTextDTO.getTextContent().trim(), sendTextDTO.getWechatGroupId(), wechatUserId, sendTextDTO.getWxId(), sendTextDTO.getIp(), sendTextDTO.getCode());
log.info("[接收用户发送文本消息] 总耗时:{}ms ", System.currentTimeMillis() - l); log.info("[接收用户发送文本消息] 总耗时:{}ms ", System.currentTimeMillis() - l);
......
...@@ -289,9 +289,17 @@ public class PushBizImpl implements PushBiz { ...@@ -289,9 +289,17 @@ public class PushBizImpl implements PushBiz {
pushGroupRecord.setPushStatus(pushRecord.getPushStatus()); pushGroupRecord.setPushStatus(pushRecord.getPushStatus());
pushGroupRecords.add(pushGroupRecord); pushGroupRecords.add(pushGroupRecord);
pushGroupRecordDao.insert(pushGroupRecord); pushGroupRecordDao.insert(pushGroupRecord);
//获取群信息
GroupQrcode groupQrcode = groupQrcodeDao.getById(pushGroup.getBookGroupQrcodeId());
if (groupQrcode == null) {
LOGGER.error("未找到群信息!qrcodeId=" + pushGroup.getBookGroupQrcodeId());
continue;
}
//获取机器人微信号
String altId = wechatGroupConsr.getRobotIdByGroupId(groupQrcode.getWeixinGroupId());
//遍历发送消息 //遍历发送消息
for (PushItem pushItem : pushItemList) { for (PushItem pushItem : pushItemList) {
sendWechatMessage(pushGroup, pushItem, pushGroupRecord.getId()); sendWechatMessage(pushGroup, pushItem, pushGroupRecord.getId(), altId);
} }
} }
} }
...@@ -300,7 +308,7 @@ public class PushBizImpl implements PushBiz { ...@@ -300,7 +308,7 @@ public class PushBizImpl implements PushBiz {
* 发消息 * 发消息
*/ */
@ParamLog("发消息") @ParamLog("发消息")
private void sendWechatMessage(PushGroup pushGroup, PushItem pushItem, Long pushGroupRecordId) { private void sendWechatMessage(PushGroup pushGroup, PushItem pushItem, Long pushGroupRecordId, String altId) {
//获取群信息 //获取群信息
GroupQrcode groupQrcode = groupQrcodeDao.getById(pushGroup.getBookGroupQrcodeId()); GroupQrcode groupQrcode = groupQrcodeDao.getById(pushGroup.getBookGroupQrcodeId());
if (groupQrcode == null) { if (groupQrcode == null) {
...@@ -314,8 +322,6 @@ public class PushBizImpl implements PushBiz { ...@@ -314,8 +322,6 @@ public class PushBizImpl implements PushBiz {
return; return;
} }
String otherUrl = "book_group_id=" + classifyDTO.getBookGroupId() + "&classify_id=" + classifyDTO.getId() + "&qrcode_id=" + pushGroup.getBookGroupQrcodeId(); String otherUrl = "book_group_id=" + classifyDTO.getBookGroupId() + "&classify_id=" + classifyDTO.getId() + "&qrcode_id=" + pushGroup.getBookGroupQrcodeId();
//获取机器人微信号
String altId = wechatGroupConsr.getRobotIdByGroupId(groupId);
if (groupQrcode != null && !StringUtil.isEmpty(groupId) && !StringUtil.isEmpty(altId)) { if (groupQrcode != null && !StringUtil.isEmpty(groupId) && !StringUtil.isEmpty(altId)) {
Integer itemType = pushItem.getItemType(); Integer itemType = pushItem.getItemType();
if (ItemTypeEnum.TEXT.value.equals(itemType)) { if (ItemTypeEnum.TEXT.value.equals(itemType)) {
...@@ -356,6 +362,7 @@ public class PushBizImpl implements PushBiz { ...@@ -356,6 +362,7 @@ public class PushBizImpl implements PushBiz {
AppDto appDto = appConsr.getBaseById(pushItem.getAppId()); AppDto appDto = appConsr.getBaseById(pushItem.getAppId());
if (appDto != null) { if (appDto != null) {
accountSettingDto = qrcodeSceneConsr.getWechatInfo(appDto.getChannelId());
SendArticleMessageVO sendArticleMessageVO = new SendArticleMessageVO(); SendArticleMessageVO sendArticleMessageVO = new SendArticleMessageVO();
sendArticleMessageVO.setAltId(altId); sendArticleMessageVO.setAltId(altId);
sendArticleMessageVO.setDescription(appDto.getTypeName()); sendArticleMessageVO.setDescription(appDto.getTypeName());
......
package com.pcloud.book.weixinclock.biz;
import com.pcloud.book.group.vo.BookGroupClassifyVO;
import com.pcloud.book.group.vo.ListGroupClassifyParam;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.readercenter.wechat.entity.WechatGroupUser;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/14 19:11
*/
public interface WeixinClockBiz {
/**
* 创建微信群签到打卡
* @param weixinClockDto
*/
Long createWeixinClock(WeixinClockDto weixinClockDto) throws BizException;
/**
* 获取编辑所有的分类
* @param listGroupClassifyParam
*/
PageBeanNew<BookGroupClassifyVO> listGroupClassify4Clock(ListGroupClassifyParam listGroupClassifyParam, Long adviserId) throws BizException;
/**
* 删除微信群签到打卡
* @param weixinClockId
*/
void deleteWeixinClock(Long weixinClockId, Long adviserId) throws BizException;
/**
* 修改微信群签到打卡
* @param weixinClockDto
*/
void updateWeixinClock(WeixinClockDto weixinClockDto) throws BizException;
/**
* 微信群签到打卡列表(编辑端)
* @param pageParam
*/
PageBeanNew<WeixinClockDto> listWeixinClock4Adviser(PageParam pageParam, Map<String,Object> paramMap) throws BizException;
/**
* 获取微信群签到打卡信息
* @param weixinClockId
*/
WeixinClockDto getWeixinClockBaseInfo(Long weixinClockId) throws BizException;
/**
* 获取某个微信群签到打卡的所有群分类详情
* @param weixinClockId
*/
PageBeanNew<BookGroupClassifyVO> listGroupClassifyDetail4Clock(Long weixinClockId, Integer currentPage, Integer numPerPage) throws BizException;
/**
* 校验是否为该群的打卡关键字
* @param weixinGroupId
*/
Boolean checkWeixinClockKeyword(String content, String weixinGroupId) throws BizException;
/**
* 发送关键词信息
* @param content
* @param userWxId
* @return
*/
Boolean sendKeywordMessage(String content, String userWxId, String wechatGroupId,String wxId, String ip);
/**
* 获取某个群内的打卡排行榜
* @param wxGroupId
* @return
*/
PageBeanNew<RankDto> listWeixinClockRank(String wxGroupId, String wxUserId, Integer currentPage, Integer numPerPage);
/**
* 获取某个群内某个用户的信息
* @param wxGroupId
* @return
*/
RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId, String wxUserId);
/**
* 接收到微信用户绑定TOPIC
* @param wechatGroupUser
*/
void receiveWxGroupUserBindTopic(WechatGroupUser wechatGroupUser);
}
package com.pcloud.book.weixinclock.check;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
/**
* @author 杨涛
* @description 检查
* @date 2019/8/20 10:03
*/
public interface WeixinClockCheck {
void checkParam4CreateWeixinClock(WeixinClockDto weixinClockDto);
}
package com.pcloud.book.weixinclock.check.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.clock.entity.BookClockInfo;
import com.pcloud.book.weixinclock.check.WeixinClockCheck;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author 杨涛
* @description 检查
* @date 2019/8/20 10:19
*/
@Component("weixinClockCheck")
public class WeixinClockCheckImpl implements WeixinClockCheck {
/**
* 创建微信签到打卡时的参数校验
* @param weixinClockDto
*/
@Override
public void checkParam4CreateWeixinClock(WeixinClockDto weixinClockDto) {
if(StringUtil.isEmpty(weixinClockDto.getClockKeyword())){
throw new BookBizException(BookBizException.ERROR,"缺少打卡关键词!");
}
if(StringUtil.isEmpty(weixinClockDto.getClockGuide())){
throw new BookBizException(BookBizException.ERROR,"缺少打卡引导语!");
}
if(StringUtil.isEmpty(weixinClockDto.getClockIntroduction())){
throw new BookBizException(BookBizException.ERROR,"缺少打卡简介!");
}
/*if(null == weixinClockDto.getClockPrizeId()){
throw new BookBizException(BookBizException.ERROR,"缺少打卡的奖励应用ID!");
}*/
}
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.book.weixinclock.entity.WeixinClock;
import com.pcloud.common.core.dao.BaseDao;
import java.util.Map;
/**
* @author 杨涛
* @description dao层
* @date 2019/8/14 19:17
*/
public interface WeixinClockDao extends BaseDao<WeixinClock> {
/**
* 删除微信群签到打卡
* @param paramMap
*/
void deleteWeixinClock(Map<String,Object> paramMap);
/**
* 获取微信群签到打卡信息
* @param weixinClockId
*/
WeixinClockDto getWeixinClockBaseInfo(Long weixinClockId);
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.book.weixinclock.dto.ClassifyInfoDto;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.book.weixinclock.entity.WeixinClockGroupClassify;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description 群分类
* @date 2019/8/15 11:25
*/
public interface WeixinClockGroupClassifyDao extends BaseDao<WeixinClockGroupClassify> {
/**
* 批量插入
* @param groupClassifyIds
*/
void batchInsert(List<WeixinClockGroupClassify> groupClassifyIds);
/**
* 获取该群分类下的打卡关键字
* @param paramMap
* @return
*/
String getKeywordByGroupClassify (Map<String,Object> paramMap);
/**
* 根据群分类获取某个群的详细信息
* @param bookGroupClassifyId
* @return
*/
WeixinClockDto getClockBaseInfoByClassify(Long bookGroupClassifyId);
/**
* 根据weixinClockId获取群分类等统计
* @param weixinClockId
* @return
*/
StatisticVO getClockGroupStatistics(Long weixinClockId);
/**
* 获取群分类详情
* @param weixinClockId
* @return
*/
List<ClassifyInfoDto> getClassifyInfo4Update(Long weixinClockId);
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.entity.WeixinClockMember;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/16 9:59
*/
public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> {
/**
* 获取某个群内的打卡排行榜
* @param wxGroupId
* @return
*/
List<RankDto> listWeixinClockRank(String wxGroupId, String wxUserId);
/**
* 获取某个群内某用户的信息
* @param userWxId
* @return
*/
WeixinClockMember getByWxUserId(String wechatGroupId, String userWxId);
/**
* 更新打卡天数
* @param userWxId
* @return
*/
void updateClockDays(String wechatGroupId, String userWxId, Long wechatUserId);
/**
* 获取的打卡排名(微信群)
* @param wechatGroupId
* @param userWxId
* @return
*/
Integer getMyNewOrder(String wechatGroupId, String userWxId);
/**
* 获取某个群内某个用户的信息
* @param wxGroupId
* @param wechatUserId
* @return
*/
RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId);
/**
* 同步wechatuserId
* @param wxUserId
* @param wechatUserId
* @return
*/
void updatMemberWechatUserId(String wxUserId, Long wechatUserId);
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface WeixinClockPrizeRecordDao extends BaseDao<WeixinClockPrizeRecord> {
int deleteByWxUserId(String wxUserId);
WeixinClockPrizeRecord selectByWxUserIdAndAppId(String wxUserId, Long appId);
void updatePrizeTime(String wxUserId, Long clockPrizeId, Integer grantNum);
List<WeixinClockPrizeRecord> getAllPrizeList(String wxUserId);
}
\ No newline at end of file
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockReward;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @author 杨涛
* @description 奖励
* @date 2019/8/15 14:04
*/
public interface WeixinClockRewardDao extends BaseDao<WeixinClockReward> {
/**
* 批量插入
* @param weixinClockRewards
*/
void batchInsert(List<WeixinClockReward> weixinClockRewards);
/**
* 获取奖励详情给编辑
* @param weixinClockId
*/
List<WeixinClockReward> listRewardDetail4Adviser(Long weixinClockId);
/**
* 获取奖励次数
* @param weixinClockId
*/
Integer getGrantNumFromReward(Long weixinClockId, Long clockDays);
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockTopic;
import com.pcloud.common.core.dao.BaseDao;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/16 11:39
*/
public interface WeixinClockTopicDao extends BaseDao<WeixinClockTopic> {
/**
* 获取用户今天打卡情况
* @param wxGroupId
* @param wxUserId
* @return
*/
WeixinClockTopic getTopicByIds4Today(String wxGroupId, String wxUserId);
/**
* 获得用户的打卡天数
* @param wxGroupId
* @param wxUserId
* @return
*/
Long getClockCountByUser(String wxGroupId, String wxUserId);
}
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockDao;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.book.weixinclock.entity.WeixinClock;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.Map;
/**
* @author 杨涛
* @description dao层
* @date 2019/8/14 19:18
*/
@Repository("weixinClockDao")
public class WeixinClockDaoImpl extends BaseDaoImpl<WeixinClock> implements WeixinClockDao {
/**
* 删除微信群签到打卡
* @param paramMap
* @return
*/
@Override
public void deleteWeixinClock(Map<String, Object> paramMap) {
super.sqlSessionTemplate.delete(getStatement("deleteWeixinClock"),paramMap);
}
/**
* 获取微信群签到打卡信息
* @param weixinClockId
* @return
*/
@Override
public WeixinClockDto getWeixinClockBaseInfo(Long weixinClockId) {
return super.sqlSessionTemplate.selectOne(getStatement("getWeixinClockBaseInfo"),weixinClockId);
}
}
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao;
import com.pcloud.book.weixinclock.dto.ClassifyInfoDto;
import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.book.weixinclock.entity.WeixinClockGroupClassify;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/15 11:25
*/
@Repository("weixinClockGroupClassifyDao")
public class WeixinClockGroupClassifyDaoImpl extends BaseDaoImpl<WeixinClockGroupClassify> implements WeixinClockGroupClassifyDao {
/**
* 批量插入
* @param groupClassifyIds
*/
@Override
public void batchInsert(List<WeixinClockGroupClassify> groupClassifyIds) {
super.sqlSessionTemplate.insert(getStatement("batchInsert"),groupClassifyIds);
}
/**
* 获取该群分类下的打卡关键字
* @param paramMap
* @return
*/
@Override
public String getKeywordByGroupClassify(Map<String, Object> paramMap) {
return super.sqlSessionTemplate.selectOne(getStatement("getKeywordByGroupClassify"),paramMap);
}
/**
* 根据群分类获取某个群的详细信息
* @param bookGroupClassifyId
* @return
*/
@Override
public WeixinClockDto getClockBaseInfoByClassify(Long bookGroupClassifyId) {
return super.sqlSessionTemplate.selectOne(getStatement("getClockBaseInfoByClassify"),bookGroupClassifyId);
}
/**
* 获取打卡统计
* @param weixinClockId
* @return
*/
@Override
public StatisticVO getClockGroupStatistics(Long weixinClockId) {
return this.getSqlSession().selectOne(this.getStatement("getClockGroupStatistics"), weixinClockId);
}
/**
* 获取群分类详情
* @param weixinClockId
* @return
*/
@Override
public List<ClassifyInfoDto> getClassifyInfo4Update(Long weixinClockId) {
return super.sqlSessionTemplate.selectList(getStatement("getClassifyInfo4Update"),weixinClockId);
}
}
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockMemberDao;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.entity.WeixinClockMember;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/16 9:59
*/
@Repository("weixinClockMemberDao")
public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> implements WeixinClockMemberDao {
/**
* 获取某个群内的打卡排行榜
* @param wxGroupId
* @return
*/
@Override
public List<RankDto> listWeixinClockRank(String wxGroupId, String wxUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxGroupId",wxGroupId);
paramMap.put("wxUserId",wxUserId);
return super.sqlSessionTemplate.selectList(getStatement("listWeixinClockRank"),paramMap);
}
/**
* 获取某个群内某用户的信息
* @param userWxId
* @return
*/
@Override
public WeixinClockMember getByWxUserId(String wechatGroupId, String userWxId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wechatGroupId",wechatGroupId);
paramMap.put("userWxId",userWxId);
return super.sqlSessionTemplate.selectOne(getStatement("getByWxUserId"),paramMap);
}
/**
* 更新打卡天数
* @param userWxId
* @return
*/
@Override
public void updateClockDays(String wechatGroupId, String userWxId, Long wechatUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wechatGroupId",wechatGroupId);
paramMap.put("userWxId",userWxId);
paramMap.put("wechatUserId",wechatUserId);
super.getSqlSession().update(this.getStatement("updateClockDays"), paramMap);
}
/**
* 获取群内最新排名
* @param userWxId
* @return
*/
@Override
public Integer getMyNewOrder(String wechatGroupId, String userWxId){
Map<String, Object> map = new HashMap<>();
map.put("wechatGroupId", wechatGroupId);
map.put("userWxId", userWxId);
return super.getSqlSession().selectOne(getStatement("getMyNewOrder"), map);
}
/**
* 获取某个群内某个用户的信息
* @param wxGroupId
* @return
*/
@Override
public RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId) {
Map<String, Object> map = new HashMap<>();
map.put("wechatUserId", wechatUserId);
map.put("wechatGroupId", wxGroupId);
return super.getSqlSession().selectOne(getStatement("getClockWechatUserRank"), map);
}
@Override
public void updatMemberWechatUserId(String wxUserId, Long wechatUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
paramMap.put("wechatUserId",wechatUserId);
super.sqlSessionTemplate.update(getStatement("updatMemberWechatUserId"),paramMap);
}
}
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockPrizeRecordDao;
import com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/23 17:32
*/
@Repository("weixinClockPrizeRecordDao")
public class WeixinClockPrizeRecordDaoImpl extends BaseDaoImpl<WeixinClockPrizeRecord> implements WeixinClockPrizeRecordDao {
@Override
public int deleteByWxUserId(String wxUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
return super.sqlSessionTemplate.delete(getStatement("deleteByWxUserId"),paramMap);
}
@Override
public WeixinClockPrizeRecord selectByWxUserIdAndAppId(String wxUserId, Long appId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
paramMap.put("appId",appId);
return super.sqlSessionTemplate.selectOne(getStatement("selectByWxUserIdAndAppId"),paramMap);
}
@Override
public void updatePrizeTime(String userWxId, Long clockPrizeId, Integer grantNum) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",userWxId);
paramMap.put("appId",clockPrizeId);
paramMap.put("grantNum",grantNum);
super.sqlSessionTemplate.update(getStatement("updatePrizeTime"),paramMap);
}
@Override
public List<WeixinClockPrizeRecord> getAllPrizeList(String wxUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
return super.sqlSessionTemplate.selectList(getStatement("getAllPrizeList"),paramMap);
}
}
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockRewardDao;
import com.pcloud.book.weixinclock.entity.WeixinClockReward;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/15 14:04
*/
@Repository("weixinClockRewardDao")
public class WeixinClockRewardDaoImpl extends BaseDaoImpl<WeixinClockReward> implements WeixinClockRewardDao {
@Override
public void batchInsert(List<WeixinClockReward> weixinClockRewards) {
super.sqlSessionTemplate.insert(getStatement("batchInsert"),weixinClockRewards);
}
@Override
public List<WeixinClockReward> listRewardDetail4Adviser(Long weixinClockId) {
return super.sqlSessionTemplate.selectList(getStatement("listRewardDetail4Adviser"),weixinClockId);
}
@Override
public Integer getGrantNumFromReward(Long weixinClockId, Long clockDays) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("weixinClockId",weixinClockId);
paramMap.put("clockDays",clockDays);
return super.sqlSessionTemplate.selectOne(getStatement("getGrantNumFromReward"),paramMap);
}
}
package com.pcloud.book.weixinclock.dao.impl;
import com.google.common.collect.Maps;
import com.pcloud.book.weixinclock.dao.WeixinClockTopicDao;
import com.pcloud.book.weixinclock.entity.WeixinClockTopic;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.DateNewUtils;
import org.springframework.stereotype.Repository;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/16 11:39
*/
@Repository("weixinClockTopicDao")
public class WeixinClockTopicDaoImpl extends BaseDaoImpl<WeixinClockTopic> implements WeixinClockTopicDao {
/**
* 获取用户今天打卡情况
*/
@Override
public WeixinClockTopic getTopicByIds4Today(String wxGroupId, String wxUserId) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("wxGroupId", wxGroupId);
paramMap.put("wxUserId", wxUserId);
paramMap.put("date", DateNewUtils.getShortDateStr());
return super.getSqlSession().selectOne(getStatement("getTopicByIds4Today"), paramMap);
}
/**
* 获得用户的打卡天数
*/
@Override
public Long getClockCountByUser(String wxGroupId, String wxUserId) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("wxGroupId", wxGroupId);
paramMap.put("wxUserId", wxUserId);
return super.getSqlSession().selectOne(getStatement("getClockCountByUser"), paramMap);
}
}
package com.pcloud.book.weixinclock.dto;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/20 16:39
*/
public class ClassifyInfoDto extends BaseDto {
private static final long serialVersionUID = -2602004619572932040L;
@ApiModelProperty("分类标识")
private Long classifyId;
@ApiModelProperty("群分类")
private String classify;
@ApiModelProperty("群数量")
private Integer groupsCount;
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
public Integer getGroupsCount() {
return groupsCount;
}
public void setGroupsCount(Integer groupsCount) {
this.groupsCount = groupsCount;
}
@Override
public String toString() {
return "ClassifyInfoDto{" +
"classifyId=" + classifyId +
", classify='" + classify + '\'' +
", groupsCount=" + groupsCount +
'}';
}
}
package com.pcloud.book.weixinclock.dto;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description 抽奖应用信息
* @date 2019/8/16 14:22
*/
public class DrawRewardDto extends BaseDto {
private static final long serialVersionUID = -5223468352278026294L;
@ApiModelProperty("应用标识")
private Long appId;
@ApiModelProperty("渠道标识")
private Long channelId;
@ApiModelProperty("类型")
private String typeCode;
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("封面图")
private String squareImg;
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSquareImg() {
return squareImg;
}
public void setSquareImg(String squareImg) {
this.squareImg = squareImg;
}
@Override
public String toString() {
return "DrawRewardDto{" +
"appId=" + appId +
", channelId=" + channelId +
", typeCode='" + typeCode + '\'' +
", title='" + title + '\'' +
", squareImg='" + squareImg + '\'' +
'}';
}
}
package com.pcloud.book.weixinclock.dto;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/16 17:45
*/
public class RankDto extends BaseDto {
private static final long serialVersionUID = 1717568387924758933L;
@ApiModelProperty("排名")
private Integer rankNum;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("头像")
private String headPic;
@ApiModelProperty("打卡次数")
private Integer clockNum;
public Integer getRankNum() {
return rankNum;
}
public void setRankNum(Integer rankNum) {
this.rankNum = rankNum;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getHeadPic() {
return headPic;
}
public void setHeadPic(String headPic) {
this.headPic = headPic;
}
public Integer getClockNum() {
return clockNum;
}
public void setClockNum(Integer clockNum) {
this.clockNum = clockNum;
}
@Override
public String toString() {
return "RankDto{" +
"rankNum=" + rankNum +
", nickname='" + nickname + '\'' +
", headPic='" + headPic + '\'' +
", clockNum=" + clockNum +
'}';
}
}
package com.pcloud.book.weixinclock.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.book.weixinclock.entity.WeixinClockReward;
import com.pcloud.common.dto.BaseDto;
import java.util.Date;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description dto
* @date 2019/8/15 9:13
*/
public class WeixinClockDto extends BaseDto {
private static final long serialVersionUID = 2919177537250026356L;
@ApiModelProperty("weixinClockId")
private Long weixinClockId;
@ApiModelProperty("群统计信息")
private StatisticVO statisticVO;
@ApiModelProperty("抽奖应用信息")
private DrawRewardDto drawRewardDto;
@ApiModelProperty("打卡奖励集合")
private List<WeixinClockReward> weixinClockRewards;
@ApiModelProperty("群分类详情")
private List<ClassifyInfoDto> classifyInfoDtos;
@ApiModelProperty("群分类集合")
private List<Long> groupClassifyIds;
@ApiModelProperty("打卡关键词")
private String clockKeyword;
@ApiModelProperty("打卡引导语")
private String clockGuide;
@ApiModelProperty("打卡简介")
private String clockIntroduction;
@ApiModelProperty("打卡奖励ID")
private Long clockPrizeId;
@ApiModelProperty("打卡奖励URL")
private String clockPrizeUrl;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createDate;
@ApiModelProperty("最近修改人")
private Long lastModifiedUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("最近修改时间")
private Date lastModifiedDate;
public Long getWeixinClockId() {
return weixinClockId;
}
public void setWeixinClockId(Long weixinClockId) {
this.weixinClockId = weixinClockId;
}
public StatisticVO getStatisticVO() {
return statisticVO;
}
public void setStatisticVO(StatisticVO statisticVO) {
this.statisticVO = statisticVO;
}
public DrawRewardDto getDrawRewardDto() {
return drawRewardDto;
}
public void setDrawRewardDto(DrawRewardDto drawRewardDto) {
this.drawRewardDto = drawRewardDto;
}
public List<WeixinClockReward> getWeixinClockRewards() {
return weixinClockRewards;
}
public void setWeixinClockRewards(List<WeixinClockReward> weixinClockRewards) {
this.weixinClockRewards = weixinClockRewards;
}
public List<ClassifyInfoDto> getClassifyInfoDtos() {
return classifyInfoDtos;
}
public void setClassifyInfoDtos(List<ClassifyInfoDto> classifyInfoDtos) {
this.classifyInfoDtos = classifyInfoDtos;
}
public List<Long> getGroupClassifyIds() {
return groupClassifyIds;
}
public void setGroupClassifyIds(List<Long> groupClassifyIds) {
this.groupClassifyIds = groupClassifyIds;
}
public String getClockKeyword() {
return clockKeyword;
}
public void setClockKeyword(String clockKeyword) {
this.clockKeyword = clockKeyword;
}
public String getClockGuide() {
return clockGuide;
}
public void setClockGuide(String clockGuide) {
this.clockGuide = clockGuide;
}
public String getClockIntroduction() {
return clockIntroduction;
}
public void setClockIntroduction(String clockIntroduction) {
this.clockIntroduction = clockIntroduction;
}
public Long getClockPrizeId() {
return clockPrizeId;
}
public void setClockPrizeId(Long clockPrizeId) {
this.clockPrizeId = clockPrizeId;
}
public String getClockPrizeUrl() {
return clockPrizeUrl;
}
public void setClockPrizeUrl(String clockPrizeUrl) {
this.clockPrizeUrl = clockPrizeUrl;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
@Override
public Long getLastModifiedUser() {
return lastModifiedUser;
}
@Override
public void setLastModifiedUser(Long lastModifiedUser) {
this.lastModifiedUser = lastModifiedUser;
}
@Override
public Date getLastModifiedDate() {
return lastModifiedDate;
}
@Override
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
@Override
public String toString() {
return "WeixinClockDto{" +
"weixinClockId=" + weixinClockId +
", statisticVO=" + statisticVO +
", drawRewardDto=" + drawRewardDto +
", weixinClockRewards=" + weixinClockRewards +
", classifyInfoDtos=" + classifyInfoDtos +
", groupClassifyIds=" + groupClassifyIds +
", clockKeyword='" + clockKeyword + '\'' +
", clockGuide='" + clockGuide + '\'' +
", clockIntroduction='" + clockIntroduction + '\'' +
", clockPrizeId=" + clockPrizeId +
", clockPrizeUrl='" + clockPrizeUrl + '\'' +
", createUser=" + createUser +
", createDate=" + createDate +
", lastModifiedUser=" + lastModifiedUser +
", lastModifiedDate=" + lastModifiedDate +
'}';
}
}
package com.pcloud.book.weixinclock.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description 微信打卡
* @date 2019/8/14 19:49
*/
public class WeixinClock extends BaseEntity {
private static final long serialVersionUID = 5405036821243584401L;
@ApiModelProperty("weixinClockId")
private Long weixinClockId;
@ApiModelProperty("打卡关键词")
private String clockKeyword;
@ApiModelProperty("打卡引导语")
private String clockGuide;
@ApiModelProperty("打卡简介")
private String clockIntroduction;
@ApiModelProperty("打卡奖励ID")
private Long clockPrizeId;
@ApiModelProperty("打卡奖励URL")
private String clockPrizeUrl;
@ApiModelProperty("创建人")
private Long createUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createDate;
@ApiModelProperty("最近修改人")
private Long lastModifiedUser;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("最近修改时间")
private Date lastModifiedDate;
public Long getWeixinClockId() {
return weixinClockId;
}
public void setWeixinClockId(Long weixinClockId) {
this.weixinClockId = weixinClockId;
}
public String getClockKeyword() {
return clockKeyword;
}
public void setClockKeyword(String clockKeyword) {
this.clockKeyword = clockKeyword;
}
public String getClockGuide() {
return clockGuide;
}
public void setClockGuide(String clockGuide) {
this.clockGuide = clockGuide;
}
public String getClockIntroduction() {
return clockIntroduction;
}
public void setClockIntroduction(String clockIntroduction) {
this.clockIntroduction = clockIntroduction;
}
public Long getClockPrizeId() {
return clockPrizeId;
}
public void setClockPrizeId(Long clockPrizeId) {
this.clockPrizeId = clockPrizeId;
}
public String getClockPrizeUrl() {
return clockPrizeUrl;
}
public void setClockPrizeUrl(String clockPrizeUrl) {
this.clockPrizeUrl = clockPrizeUrl;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Long getLastModifiedUser() {
return lastModifiedUser;
}
public void setLastModifiedUser(Long lastModifiedUser) {
this.lastModifiedUser = lastModifiedUser;
}
public Date getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
@Override
public String toString() {
return "WeixinClock{" +
"weixinClockId=" + weixinClockId +
", clockKeyword='" + clockKeyword + '\'' +
", clockGuide='" + clockGuide + '\'' +
", clockIntroduction='" + clockIntroduction + '\'' +
", clockPrizeId=" + clockPrizeId +
", clockPrizeUrl='" + clockPrizeUrl + '\'' +
", createUser=" + createUser +
", createDate=" + createDate +
", lastModifiedUser=" + lastModifiedUser +
", lastModifiedDate=" + lastModifiedDate +
'}';
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment