Commit d1c9393d by lili

合并代码

parent bea9c93a
package com.pcloud.book.group.dto;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.pcloud.book.book.dto.BookDto;
/**
* 社群书群二维码DTO
* @author PENG
* @date 2019年4月17日11:31:16
*/
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class BookGroupDTO implements Serializable {
private static final long serialVersionUID = 7620868422261683212L;
/**
* book_group.id (唯一标识)
*/
private Long id;
/**
* book_group.book_id (书刊ID)
*/
private Long bookId;
/**
* book_group.channel_id (运营ID)
*/
private Long channelId;
/**
* book_group.group_qrcode_url (群二维码图片)
*/
private String groupQrcodeUrl;
/**
* book_group.group_qrcode_name (群二维码名称)
*/
private String groupQrcodeName;
/**
* book_group.pro_label_id (专业标签ID)
*/
private Long proLabelId;
/**
* 专业标签名称
*/
private String proLabelName;
/**
* book_group.dep_label_id (深度标签ID)
*/
private Long depLabelId;
/**
* 深度标签名称
*/
private String depLabelName;
/**
* book_group.pur_label_id (目的标签ID)
*/
private Long purLabelId;
/**
* 目的标签名称
*/
private String purLabelName;
/**
* 选择群页面标题
*/
private String joinTitle;
/**
* book_group.join_slogan (进群宣传语)
*/
private String joinSlogan;
/**
* book_group.personal_qrcode_url (个人二维码)
*/
private String personalQrcodeUrl;
/**
* book_group.product_id (商品ID)
*/
private Long productId;
/**
* book_group.create_user (创建人)
*/
private Long createUser;
/**
* book_group.create_time (创建时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* book_group.update_time (修改时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* book_group.is_delete (是否删除)
*/
private Boolean isDelete;
/**
* 书刊信息
*/
private BookDto bookInfo;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getGroupQrcodeUrl() {
return groupQrcodeUrl;
}
public void setGroupQrcodeUrl(String groupQrcodeUrl) {
this.groupQrcodeUrl = groupQrcodeUrl;
}
public String getGroupQrcodeName() {
return groupQrcodeName;
}
public void setGroupQrcodeName(String groupQrcodeName) {
this.groupQrcodeName = groupQrcodeName;
}
public Long getProLabelId() {
return proLabelId;
}
public void setProLabelId(Long proLabelId) {
this.proLabelId = proLabelId;
}
public Long getDepLabelId() {
return depLabelId;
}
public void setDepLabelId(Long depLabelId) {
this.depLabelId = depLabelId;
}
public Long getPurLabelId() {
return purLabelId;
}
public void setPurLabelId(Long purLabelId) {
this.purLabelId = purLabelId;
}
public String getJoinTitle() {
return joinTitle;
}
public void setJoinTitle(String joinTitle) {
this.joinTitle = joinTitle;
}
public String getJoinSlogan() {
return joinSlogan;
}
public void setJoinSlogan(String joinSlogan) {
this.joinSlogan = joinSlogan;
}
public String getPersonalQrcodeUrl() {
return personalQrcodeUrl;
}
public void setPersonalQrcodeUrl(String personalQrcodeUrl) {
this.personalQrcodeUrl = personalQrcodeUrl;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Boolean getIsDelete() {
return isDelete;
}
public void setIsDelete(Boolean isDelete) {
this.isDelete = isDelete;
}
public String getProLabelName() {
return proLabelName;
}
public void setProLabelName(String proLabelName) {
this.proLabelName = proLabelName;
}
public String getDepLabelName() {
return depLabelName;
}
public void setDepLabelName(String depLabelName) {
this.depLabelName = depLabelName;
}
public String getPurLabelName() {
return purLabelName;
}
public void setPurLabelName(String purLabelName) {
this.purLabelName = purLabelName;
}
public BookDto getBookInfo() {
return bookInfo;
}
public void setBookInfo(BookDto bookInfo) {
this.bookInfo = bookInfo;
}
@Override
public String toString() {
return "BookGroupDTO{" +
"id=" + id +
", bookId=" + bookId +
", channelId=" + channelId +
", groupQrcodeUrl='" + groupQrcodeUrl + '\'' +
", groupQrcodeName='" + groupQrcodeName + '\'' +
", proLabelId=" + proLabelId +
", proLabelName='" + proLabelName + '\'' +
", depLabelId=" + depLabelId +
", depLabelName='" + depLabelName + '\'' +
", purLabelId=" + purLabelId +
", purLabelName='" + purLabelName + '\'' +
", joinTitle='" + joinTitle + '\'' +
", joinSlogan='" + joinSlogan + '\'' +
", personalQrcodeUrl='" + personalQrcodeUrl + '\'' +
", productId=" + productId +
", createUser=" + createUser +
", createTime=" + createTime +
", updateTime=" + updateTime +
", isDelete=" + isDelete +
", bookInfo=" + bookInfo +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/28 20:25
*/
public class GroupClassifyQrcodeDTO implements Serializable {
/**
* 图书标识
*/
private Long bookId;
/**
* 运营标识
*/
private Long channelId;
/**
* 社群码标识
*/
private Long bookGroupId;
/**
* 分类标识
*/
private Long classifyId;
/**
* 编辑标识
*/
private Long adviserId;
/**
* 分类二维码标识
*/
private Long groupQrcodeId;
/**
* 群二维码标识
*/
private Long weixinQrcodeId;
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
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 getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getGroupQrcodeId() {
return groupQrcodeId;
}
public void setGroupQrcodeId(Long groupQrcodeId) {
this.groupQrcodeId = groupQrcodeId;
}
public Long getWeixinQrcodeId() {
return weixinQrcodeId;
}
public void setWeixinQrcodeId(Long weixinQrcodeId) {
this.weixinQrcodeId = weixinQrcodeId;
}
@Override
public String toString() {
return "GroupClassifyQrcodeDTO{" +
"bookId=" + bookId +
", channelId=" + channelId +
", bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", adviserId=" + adviserId +
", groupQrcodeId=" + groupQrcodeId +
", weixinQrcodeId=" + weixinQrcodeId +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/5/10 14:47
*/
public class GroupQrcodeBaseDTO implements Serializable {
/**
* 微信号
*/
private String weixinGroupId;
/**
* 群名称
*/
private String groupName;
public String getWeixinGroupId() {
return weixinGroupId;
}
public void setWeixinGroupId(String weixinGroupId) {
this.weixinGroupId = weixinGroupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
@Override
public String toString() {
return "GroupQrcodeBaseDTO{" +
"weixinGroupId='" + weixinGroupId + '\'' +
", groupName='" + groupName + '\'' +
'}';
}
}
package com.pcloud.book.group.dto;
import io.swagger.annotations.ApiModelProperty;
/**
* @author lily
* @date 2019/5/10 20:11
*/
public class ProAssocGroupAndUserNumberDTO {
@ApiModelProperty("微信群数量")
private Integer groupCount;
@ApiModelProperty("进群人数")
private Integer userCount;
public Integer getGroupCount() {
return groupCount;
}
public void setGroupCount(Integer groupCount) {
this.groupCount = groupCount;
}
public Integer getUserCount() {
return userCount;
}
public void setUserCount(Integer userCount) {
this.userCount = userCount;
}
@Override
public String toString() {
return "ProAssocGroupAndUserNumberDTO{" +
"groupCount=" + groupCount +
", userCount=" + userCount +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/2 14:44
*/
public class SyncWeixinGroupIdDTO implements Serializable {
/**
* 二维码标识
*/
private Long id;
/**
* 微信群id
*/
private String weixinGroupId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getWeixinGroupId() {
return weixinGroupId;
}
public void setWeixinGroupId(String weixinGroupId) {
this.weixinGroupId = weixinGroupId;
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/3/5 9:49
*/
public class UpdateQrDTO implements Serializable {
/**
* 群二维码标识
*/
private Long id;
/**
* 二维码地址
*/
private String url;
/**
* 更新状态
*/
private Integer updateState;
private String requestUrl;
/**
* 机器人微信号
*/
private String robotWxId;
public String getRobotWxId() {
return robotWxId;
}
public void setRobotWxId(String robotWxId) {
this.robotWxId = robotWxId;
}
public String getRequestUrl() {
return requestUrl;
}
public void setRequestUrl(String requestUrl) {
this.requestUrl = requestUrl;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getUpdateState() {
return updateState;
}
public void setUpdateState(Integer updateState) {
this.updateState = updateState;
}
@Override
public String toString() {
return "UpdateQrDTO{" +
"id=" + id +
", url='" + url + '\'' +
", updateState=" + updateState +
", requestUrl='" + requestUrl + '\'' +
", robotWxId='" + robotWxId + '\'' +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @author lily
* @date 2019/4/26 16:11
*/
@ApiModel
public class WeixinQrcodeCountDTO implements Serializable {
@ApiModelProperty("机器人标识")
private Integer robotId;
@ApiModelProperty("总数量")
private Integer totalCount;
@ApiModelProperty("使用次数")
private Integer useCount;
@ApiModelProperty("未使用次数")
private Integer notUseCount;
public Integer getRobotId() {
return robotId;
}
public void setRobotId(Integer robotId) {
this.robotId = robotId;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getUseCount() {
return useCount;
}
public void setUseCount(Integer useCount) {
this.useCount = useCount;
}
public Integer getNotUseCount() {
return notUseCount;
}
public void setNotUseCount(Integer notUseCount) {
this.notUseCount = notUseCount;
}
@Override
public String toString() {
return "WeixinQrcodeCountDTO{" +
"robotId=" + robotId +
", totalCount=" + totalCount +
", useCount=" + useCount +
", notUseCount=" + notUseCount +
'}';
}
}
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @author lily
* @date 2019/4/17 16:13
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class WeixinQrcodeDTO implements Serializable {
@ApiModelProperty("二维码ID")
private Long id;
@ApiModelProperty("二维码URL")
private String qrcodeUrl;
@ApiModelProperty("微信群标识")
private String weixinGroupId;
@ApiModelProperty("机器人标识")
private Long robotId;
@ApiModelProperty("机器人微信标识")
private String robotWxId;
@ApiModelProperty("用户数")
private Integer userNumber;
public Integer getUserNumber() {
return userNumber;
}
public void setUserNumber(Integer userNumber) {
this.userNumber = userNumber;
}
public Long getRobotId() {
return robotId;
}
public void setRobotId(Long robotId) {
this.robotId = robotId;
}
public String getRobotWxId() {
return robotWxId;
}
public void setRobotWxId(String robotWxId) {
this.robotWxId = robotWxId;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getQrcodeUrl() {
return qrcodeUrl;
}
public void setQrcodeUrl(String qrcodeUrl) {
this.qrcodeUrl = qrcodeUrl;
}
public String getWeixinGroupId() {
return weixinGroupId;
}
public void setWeixinGroupId(String weixinGroupId) {
this.weixinGroupId = weixinGroupId;
}
@Override
public String toString() {
return "WeixinQrcodeDTO{" +
"id=" + id +
", qrcodeUrl='" + qrcodeUrl + '\'' +
", weixinGroupId='" + weixinGroupId + '\'' +
", robotId=" + robotId +
", robotWxId='" + robotWxId + '\'' +
", userNumber=" + userNumber +
'}';
}
}
package com.pcloud.book.group.service;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.common.dto.ResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* @author lily
* @date 2019/4/28 20:20
*/
@FeignClient(value = "pcloud-service-book", qualifier = "bookGroupClassifyCloud", path = "book/v1.0/bookGroupClassifyService")
@Api(description = "微信群分类接口")
public interface BookGroupClassifyService {
@ApiOperation("根据微信群标识获取相关id")
@GetMapping("getClassifyQrcodeInfo")
ResponseEntity<ResponseDto<GroupClassifyQrcodeDTO>> getClassifyQrcodeInfo(@RequestParam("weixinGroupId") String weixinGroupId);
@ApiOperation("根据微信群标识获取相关id")
@PostMapping("listGroupQrcodeBaseInfo")
ResponseEntity<ResponseDto<Map<String, GroupQrcodeBaseDTO>>> listGroupQrcodeBaseInfo(@RequestBody List<String> weixinGroupIds);
@ApiOperation("获取商品关联群数量与人数")
@GetMapping("getProAssocGroupAndUserNumber")
ResponseEntity<ResponseDto<ProAssocGroupAndUserNumberDTO>> getProAssocGroupAndUserNumber(@RequestParam("productId") Long productId);
}
package com.pcloud.book.group.service;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* Description 社群书内部接口
* Created by PENG on 2019/5/14.
*/
@FeignClient(value = "pcloud-service-book", qualifier = "bookGroupServiceCloud", path = "book/v1.0/bookGroupService")
@Api(description = "社群书内部接口")
public interface BookGroupService {
@ApiOperation("获取社群书基本信息")
@RequestMapping(value = "getBookGroupInfo",method = RequestMethod.GET)
ResponseEntity<ResponseDto<BookGroupDTO>> getBookGroupInfo(@RequestParam("bookGroupId")Long bookGroupId) throws BizException;
}
package com.pcloud.book.group.service;
import com.pcloud.book.group.dto.SyncWeixinGroupIdDTO;
import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.dto.WeixinQrcodeCountDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* @author lily
* @date 2019/4/19 15:57
*/
@FeignClient(value = "pcloud-service-book", qualifier = "weixinQrcodeServiceCloud", path = "book/v1.0/weixinQrcodeService")
@Api(description = "微信群二维码码接口")
public interface WeixinQrcodeService {
@ApiOperation("定时任务")
@GetMapping("tenQuartz")
void tenQuartz() throws BizException;
@ApiOperation("发起更新二维码请求")
@GetMapping("setUpdateQrUrl")
void setUpdateQrUrl() throws BizException;
@ApiOperation("更新二维码地址")
@GetMapping("updateQrUrl")
void updateQrUrl(UpdateQrDTO updateQrDTO) throws BizException;
@ApiOperation("针对出错的二维码发起更新二维码请求")
@GetMapping("setUpdateQr4Error")
void setUpdateQr4Error(List<Long> ids) throws BizException;
@ApiOperation("同步微信群id")
@PostMapping("syncWeixinGroupId")
void syncWeixinGroupId(@RequestBody SyncWeixinGroupIdDTO syncWeixinGroupIdDTO);
@ApiOperation("发送修改群名称请求")
@PostMapping("sendChangeGroupNameRequest")
void sendChangeGroupNameRequest(@RequestBody(required = false) List<Long> ids);
@ApiOperation("发送同步微信id的请求")
@PostMapping("sendSyncWeixinGroupIdRequest")
void sendSyncWeixinGroupIdRequest(@RequestBody List<Long> ids);
@ApiOperation("获取机器人二维码分配情况")
@PostMapping("listWeixinQrcodeCountByRobot")
ResponseEntity<ResponseDto<Map<Long, WeixinQrcodeCountDTO>>> listWeixinQrcodeCountByRobot(@RequestBody List<Long> robotIds);
@ApiOperation("获取一个二维码")
@GetMapping("getOneQrcode")
ResponseEntity<ResponseDto<WeixinQrcodeDTO>> getOneQrcode();
}
package com.pcloud.book.push.service;
import com.pcloud.common.exceptions.BizException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
@FeignClient(value = "pcloud-service-book", qualifier = "pushServiceCloud", path = "book/v1.0/pushService")
@Api(description = "群发消息内部服务")
public interface PushService {
@ApiOperation("发送群消息")
@PostMapping("/sendGroupMessage")
void sendGroupMessage(@RequestBody Map<String, Object> map) throws BizException;
}
...@@ -146,20 +146,32 @@ ...@@ -146,20 +146,32 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.pcloud.facade</groupId>
<artifactId>pcloud-facade-wechatgroup</artifactId>
<version>${pcloud-facade-wechatgroup.version}</version>
</dependency>
<dependency>
<groupId>com.pcloud.facade</groupId>
<artifactId>pcloud-facade-promotion</artifactId>
<version>${pcloud-facade-promotion.version}</version>
</dependency>
<dependency>
<groupId>fakepath</groupId> <groupId>fakepath</groupId>
<artifactId>jbarcode</artifactId> <artifactId>jbarcode</artifactId>
<version>0.2.8</version> <version>0.2.8</version>
</dependency> </dependency>
<!--田指导发消息接口-->
<dependency>
<groupId>com.dcg</groupId>
<artifactId>wxgroup-sdk</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--spring-cloud相关--> <!--spring-cloud相关-->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
</dependency> </dependency>
...@@ -175,10 +187,6 @@ ...@@ -175,10 +187,6 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--其他--> <!--其他-->
<dependency> <dependency>
...@@ -192,8 +200,6 @@ ...@@ -192,8 +200,6 @@
<artifactId>javax.ws.rs-api</artifactId> <artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version> <version>2.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId> <artifactId>spring-tx</artifactId>
...@@ -223,18 +229,6 @@ ...@@ -223,18 +229,6 @@
</dependency> </dependency>
</dependencies> </dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build> <build>
<finalName>pcloud-service-book</finalName> <finalName>pcloud-service-book</finalName>
<plugins> <plugins>
......
...@@ -4,6 +4,7 @@ import com.alibaba.druid.pool.DruidDataSource; ...@@ -4,6 +4,7 @@ import com.alibaba.druid.pool.DruidDataSource;
import com.pcloud.book.mq.config.MQTopicConumer; import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.common.core.constant.MQTopicProducer; import com.pcloud.common.core.constant.MQTopicProducer;
import com.pcloud.common.core.mq.RabbitMQFactory; import com.pcloud.common.core.mq.RabbitMQFactory;
import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -16,7 +17,11 @@ import org.springframework.context.annotation.Bean; ...@@ -16,7 +17,11 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
import java.util.ArrayList;
import javax.sql.DataSource;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestHandlerSelectors;
...@@ -25,15 +30,12 @@ import springfox.documentation.spi.DocumentationType; ...@@ -25,15 +30,12 @@ import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.sql.DataSource;
import java.util.ArrayList;
@SpringBootApplication @SpringBootApplication
@EnableAutoConfiguration @EnableAutoConfiguration
@ComponentScan("com.pcloud") @ComponentScan("com.pcloud")
@EnableEurekaClient @EnableEurekaClient
@EnableFeignClients("com.pcloud") @EnableFeignClients("com.pcloud")
@PropertySource({ "classpath:properties/book.properties", "classpath:public_system.properties" }) @PropertySource({"classpath:properties/book.properties", "classpath:public_system.properties"})
@Configuration @Configuration
@EnableSwagger2 @EnableSwagger2
public class BookApplication { public class BookApplication {
...@@ -53,7 +55,7 @@ public class BookApplication { ...@@ -53,7 +55,7 @@ public class BookApplication {
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private ApiInfo apiInfo() {// 创建API的基本信息,这些信息会在Swagger UI中进行显示 private ApiInfo apiInfo() {// 创建API的基本信息,这些信息会在Swagger UI中进行显示
return new ApiInfoBuilder() return new ApiInfoBuilder()
.title("图书,融合版")// API 标题 .title("图书,融合版")// API 标题
.description("图书,融合了spring-cloud & dubbo的接口")// API描述 .description("图书,融合了spring-cloud & dubbo的接口")// API描述
...@@ -71,43 +73,86 @@ public class BookApplication { ...@@ -71,43 +73,86 @@ public class BookApplication {
} }
@Bean @Bean
public Queue deleteVideoQueue(){ public Queue deleteVideoQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.DELETE_VIDEO); return RabbitMQFactory.queueBuilder(MQTopicConumer.DELETE_VIDEO);
} }
@Bean @Bean
public Binding deleteVideoBind(){ public Binding deleteVideoBind() {
return RabbitMQFactory.bindingExchange(deleteVideoQueue(), MQTopicProducer.DELETE_VIDEO); return RabbitMQFactory.bindingExchange(deleteVideoQueue(), MQTopicProducer.DELETE_VIDEO);
} }
@Bean @Bean
public Queue chooseDefaultChannelQueue(){ public Queue chooseDefaultChannelQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.CHOOSE_DEFAULT_CHANNEL); return RabbitMQFactory.queueBuilder(MQTopicConumer.CHOOSE_DEFAULT_CHANNEL);
} }
@Bean @Bean
public Binding chooseDefaultChannelBind(){ public Binding chooseDefaultChannelBind() {
return RabbitMQFactory.bindingExchange(chooseDefaultChannelQueue(), MQTopicProducer.CHOOSE_DEFAULT_CHANNEL); return RabbitMQFactory.bindingExchange(chooseDefaultChannelQueue(), MQTopicProducer.CHOOSE_DEFAULT_CHANNEL);
} }
@Bean @Bean
public Queue registerPartyQueue(){ public Queue registerPartyQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.REGISTER_PARTY); return RabbitMQFactory.queueBuilder(MQTopicConumer.REGISTER_PARTY);
} }
@Bean @Bean
public Binding registerPartyBind(){ public Binding registerPartyBind() {
return RabbitMQFactory.bindingExchange(registerPartyQueue(), MQTopicProducer.REGISTER_PARTY); return RabbitMQFactory.bindingExchange(registerPartyQueue(), MQTopicProducer.REGISTER_PARTY);
} }
@Bean @Bean
public Queue genuineQueue(){ public Queue genuineQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.GENUINE); return RabbitMQFactory.queueBuilder(MQTopicConumer.GENUINE);
} }
@Bean @Bean
public Binding genuineBind(){ public Binding genuineBind() {
return RabbitMQFactory.bindingExchange(genuineQueue(), MQTopicProducer.GENUINE); return RabbitMQFactory.bindingExchange(genuineQueue(), MQTopicProducer.GENUINE);
} }
@Bean
public Queue paymentQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.PAYMENT);
}
@Bean
public Binding paymentBind() {
return RabbitMQFactory.bindingExchange(paymentQueue(), MQTopicProducer.PAYMENT);
}
@Bean
public Queue addWXGroupQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.ADD_WXGROUP);
}
@Bean
public Binding addWXGroupBind() {
return RabbitMQFactory.bindingExchange(addWXGroupQueue(), MQTopicProducer.ADD_WXGROUP);
}
@Bean
public Queue wxGroupSendTextQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.WXGROUP_SEND_TEXT);
}
@Bean
public Binding wxGroupSendTextBind() {
return RabbitMQFactory.bindingExchange(wxGroupSendTextQueue(), MQTopicProducer.WXGROUP_SEND_TEXT);
}
@Bean
public Queue pushAddUserMessage() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.PUSH_ADD_USER_MESSAGE);
}
@Bean
public Binding pushAddUserMessageBind() {
return RabbitMQFactory.bindingExchange(pushAddUserMessage(), MQTopicProducer.PUSH_ADD_USER_MESSAGE);
}
} }
...@@ -108,4 +108,29 @@ public class AppConsr { ...@@ -108,4 +108,29 @@ public class AppConsr {
return appDtos; return appDtos;
} }
/**
* 根据id获取应用基本信息
*
* @param appId 应用ID
* @return
*/
public AppDto getBaseById(Long appId) {
LOGGER.info("根据id获取应用基本信息[appService.getBaseById],参数列表[getBaseById]:" + appId);
AppDto appDto = null;
if (appId == null) {
return appDto;
}
try {
ResponseEntity<ResponseDto<AppDto>> appDtosEntity = appService.getBaseById(appId);
appDto = ResponseHandleUtil.parseResponse(appDtosEntity, AppDto.class);
} catch (BizException e) {
LOGGER.warn("根据id获取应用基本信息[appService.getBaseById]:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("根据id获取应用基本信息[appService.getBaseById]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_USER_ERROR, "根据id获取应用基本信息失败~!");
}
return appDto;
}
} }
...@@ -9,9 +9,12 @@ import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService; ...@@ -9,9 +9,12 @@ import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO; import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrVO; import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrVO;
import com.pcloud.channelcenter.qrcode.vo.BookAssocQRcountRequestVO; import com.pcloud.channelcenter.qrcode.vo.BookAssocQRcountRequestVO;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.channelcenter.wechat.dto.ListIsInBookParam; import com.pcloud.channelcenter.wechat.dto.ListIsInBookParam;
import com.pcloud.channelcenter.wechat.service.AccountSettingService;
import com.pcloud.channelcenter.wechat.service.MessageService; import com.pcloud.channelcenter.wechat.service.MessageService;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.SystemCode;
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.ListUtils;
...@@ -43,6 +46,8 @@ public class QrcodeSceneConsr { ...@@ -43,6 +46,8 @@ public class QrcodeSceneConsr {
private QrcodeSceneService qrcodeSceneService; private QrcodeSceneService qrcodeSceneService;
@Autowired @Autowired
private MessageService messageService; private MessageService messageService;
@Autowired
private AccountSettingService accountSettingService;
/** /**
* 删除书籍关联的二维码 * 删除书籍关联的二维码
...@@ -272,5 +277,15 @@ public class QrcodeSceneConsr { ...@@ -272,5 +277,15 @@ public class QrcodeSceneConsr {
return null; return null;
} }
@ParamLog(description = "获取公众号基本信息")
public AccountSettingDto getWechatInfo(Long channelId) throws BizException {
if (channelId == null) return null;
try {
return ResponseHandleUtil.parseResponse(accountSettingService.getWechat(channelId, SystemCode.channel.code), AccountSettingDto.class);
} catch (BizException e) {
LOGGER.error("【渠道(消)】 获取公众号基本信息,<ERROR>.[getById]:" + e.getMessage(), e);
}
return null;
}
} }
/** /**
* *
*/ */
package com.pcloud.book.consumer.message; package com.pcloud.book.consumer.message;
import java.util.Date; import java.util.Date;
import java.util.Map;
import com.pcloud.book.base.exception.BookBizException;
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.stereotype.Component; import org.springframework.stereotype.Component;
import com.pcloud.common.core.biz.MessageBiz; import com.pcloud.common.core.biz.MessageBiz;
import com.pcloud.common.core.dto.SendMessageDto;
import com.pcloud.common.core.dto.SendNotifyDto; import com.pcloud.common.core.dto.SendNotifyDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
...@@ -27,40 +22,72 @@ import com.pcloud.common.utils.string.StringUtil; ...@@ -27,40 +22,72 @@ import com.pcloud.common.utils.string.StringUtil;
@Component("messageConsr") @Component("messageConsr")
public class MessageConsr { public class MessageConsr {
/** /**
* *
*/ */
private static final Logger LOGGER = LoggerFactory.getLogger(MessageConsr.class); private static final Logger LOGGER = LoggerFactory.getLogger(MessageConsr.class);
@Autowired @Autowired
private MessageBiz messageBiz; private MessageBiz messageBiz;
/**
* 发送站内信 /**
*/ * 发送站内信
public void sendLetter(Long fromId, Long toId, String content, String sysCode, String typeCode, String resourceId, String fileName) */
throws BizException { public void sendLetter(Long fromId, Long toId, String content, String sysCode, String typeCode, String resourceId, String fileName)
LOGGER.info("【站内信-消息(消)】发送站内信,<START>.[fromId]=" + fromId + ",[toId]=" + toId + ",[content]=" + content throws BizException {
+ ",[sysCode]=" + sysCode + ",[typeCode]=" + typeCode + ",[resourceId]=" + resourceId+ ",fileName="+fileName); LOGGER.info("【站内信-消息(消)】发送站内信,<START>.[fromId]=" + fromId + ",[toId]=" + toId + ",[content]=" + content
if (fromId == null || toId == null || StringUtil.isEmpty(content) || StringUtil.isEmpty(sysCode) + ",[sysCode]=" + sysCode + ",[typeCode]=" + typeCode + ",[resourceId]=" + resourceId + ",fileName=" + fileName);
|| StringUtil.isEmpty(typeCode) || resourceId == null) { if (fromId == null || toId == null || StringUtil.isEmpty(content) || StringUtil.isEmpty(sysCode)
return; || StringUtil.isEmpty(typeCode) || resourceId == null) {
} return;
// 组装参数 }
SendNotifyDto sendNotifyDto = new SendNotifyDto(); // 组装参数
sendNotifyDto.setCreatedTime(new Date()); SendNotifyDto sendNotifyDto = new SendNotifyDto();
sendNotifyDto.setFromId(fromId); sendNotifyDto.setCreatedTime(new Date());
sendNotifyDto.setToId(toId); sendNotifyDto.setFromId(fromId);
sendNotifyDto.setNotifyContent(content); sendNotifyDto.setToId(toId);
sendNotifyDto.setSystemCode(sysCode); sendNotifyDto.setNotifyContent(content);
sendNotifyDto.setTypeCode(typeCode); sendNotifyDto.setSystemCode(sysCode);
sendNotifyDto.setResourceId(resourceId); sendNotifyDto.setTypeCode(typeCode);
sendNotifyDto.setFileName(fileName); sendNotifyDto.setResourceId(resourceId);
try { sendNotifyDto.setFileName(fileName);
messageBiz.sendLetter(sendNotifyDto); try {
} catch (Exception e) { messageBiz.sendLetter(sendNotifyDto);
LOGGER.error("【站内信(消)】发送站内信.[sendLetter]:" + e.getMessage(), e); } catch (Exception e) {
} LOGGER.error("【站内信(消)】发送站内信.[sendLetter]:" + e.getMessage(), e);
LOGGER.info("【站内信(消)】发送站内信,<END>"); }
} LOGGER.info("【站内信(消)】发送站内信,<END>");
}
/**
* 发送站内信
*/
public void sendLetter(Long fromId, Long toId, String content, String sysCode, String typeCode, String resourceId, String fileName, String originType, String originId)
throws BizException {
LOGGER.info("【站内信-消息(消)】发送站内信,<START>.[fromId]=" + fromId + ",[toId]=" + toId + ",[content]=" + content
+ ",[sysCode]=" + sysCode + ",[typeCode]=" + typeCode + ",[resourceId]=" + resourceId + ",fileName=" + fileName);
if (fromId == null || toId == null || StringUtil.isEmpty(content) || StringUtil.isEmpty(sysCode)
|| StringUtil.isEmpty(typeCode) || resourceId == null) {
return;
}
// 组装参数
SendNotifyDto sendNotifyDto = new SendNotifyDto();
sendNotifyDto.setCreatedTime(new Date());
sendNotifyDto.setFromId(fromId);
sendNotifyDto.setToId(toId);
sendNotifyDto.setNotifyContent(content);
sendNotifyDto.setSystemCode(sysCode);
sendNotifyDto.setTypeCode(typeCode);
sendNotifyDto.setResourceId(resourceId);
sendNotifyDto.setFileName(fileName);
sendNotifyDto.setOriginType(originType);
sendNotifyDto.setOriginId(originId);
try {
messageBiz.sendLetter(sendNotifyDto);
} catch (Exception e) {
LOGGER.error("【站内信(消)】发送站内信.[sendLetter]:" + e.getMessage(), e);
}
LOGGER.info("【站内信(消)】发送站内信,<END>");
}
} }
package com.pcloud.book.consumer.promotion;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.promotion.fission.dto.UpdateQrDTO;
import com.pcloud.promotion.groupFission.service.GroupFissionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("promotionConsr")
public class PromotionConsr {
/**
* logger
*/
private static final Logger LOGGER = LoggerFactory.getLogger(PromotionConsr.class);
@Autowired
private GroupFissionService groupFissionService;
@ParamLog("获取备用二维码")
public String getSpareQr() throws BizException {
try {
return ResponseHandleUtil.parseResponse(groupFissionService.getSpareQr(), String.class);
} catch (Exception e) {
LOGGER.warn("获取备用二维码失败:" + e.getMessage(), e);
}
return "";
}
@ParamLog("同步更新二维码")
public void updateQrUrl(UpdateQrDTO updateQrDTO) throws BizException {
try {
groupFissionService.updateQrUrl(updateQrDTO);
} catch (Exception e) {
LOGGER.warn("同步更新二维码失败:" + e.getMessage(), e);
}
}
}
package com.pcloud.book.consumer.reader; package com.pcloud.book.consumer.reader;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.readercenter.wechat.dto.WechatUserRobotDto;
import com.pcloud.readercenter.wechat.entity.WechatUser; import com.pcloud.readercenter.wechat.entity.WechatUser;
import com.pcloud.readercenter.wechat.service.WechatUserService; import com.pcloud.readercenter.wechat.service.WechatUserService;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -9,6 +11,8 @@ import org.slf4j.LoggerFactory; ...@@ -9,6 +11,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
/** /**
* @author lily * @author lily
* @date 2018/12/26 16:49 * @date 2018/12/26 16:49
...@@ -36,6 +40,21 @@ public class ReaderConsr { ...@@ -36,6 +40,21 @@ public class ReaderConsr {
} }
return null; return null;
} }
@ParamLog(value = "随机获取n个用户", isAfterReturn = false)
public List<WechatUserRobotDto> selectRobotsRandom(Integer number) throws BizException {
if (number == null) {
return null;
}
try {
return ResponseHandleUtil.parseListResponse(wechatUserService.selectRobotsRandom(number), WechatUserRobotDto.class);
} catch (Exception e) {
LOGGER.error("随机获取n个用户失败[wechatUserService.getWechatUserRand]:" + e.getMessage(), e);
}
return null;
}
} }
...@@ -142,5 +142,73 @@ public class ProductConsr { ...@@ -142,5 +142,73 @@ public class ProductConsr {
} }
} }
/**
* 资源中心拉取商品基本信息
*/
public ProductDto getProBaseById(Long productId) throws BizException {
LOGGER.info("【资源中心(消)】获取商品基本信息,<START>.[productId]=" + productId + "]");
if (productId == null) {
return null;
}
try {
return ResponseHandleUtil.parseResponse(productService.getProBaseById(productId), ProductDto.class);
} catch (BizException e) {
LOGGER.warn("【资源中心(消)】获取商品基本信息失败:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("【资源中心(消)】获取商品基本信息.[getProBasesByIds]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【资源中心(消)】获取商品基本信息,<END>");
}
}
/**
* 自动上架
*/
public Map<Long, String> productAutoOnShelves(Long channelId, List<Long> productIds) throws BizException {
LOGGER.info("【资源中心(消)】自动上架,<START>.[channelId]=" + channelId + " [productIds]=" + productIds + "]");
Map<Long, String> resultMap = new HashMap<>();
if (channelId == null || ListUtils.isEmpty(productIds)) {
LOGGER.info("【资源中心(消)】自动上架,参数为空");
return resultMap;
}
try {
resultMap = ResponseHandleUtil.parseMapResponse(productService.productAutoOnShelves(channelId, productIds), Long.class, String.class);
} catch (BizException e) {
LOGGER.warn("【资源中心(消)】自动上架:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("【资源中心(消)】自动上架.[productAutoOnShelves]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【资源中心(消)】自动上架,<END>");
}
return resultMap;
}
/**
* 判断是否是超级作者
*/
public Map<Long, Boolean> getIsSuperByProductIdList(List<Long> productIds) throws BizException {
LOGGER.info("【资源中心(消)】判断是否是超级作者,<START>. [productIds]=" + productIds + "]");
Map<Long, Boolean> resultMap = new HashMap<>();
if (ListUtils.isEmpty(productIds)) {
LOGGER.info("【资源中心(消)】判断是否是超级作者,参数为空");
return resultMap;
}
try {
resultMap = ResponseHandleUtil.parseMapResponse(productService.getIsSuperByProductIdList(productIds), Long.class, Boolean.class);
} catch (BizException e) {
LOGGER.warn("【资源中心(消)】判断是否是超级作者:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("【资源中心(消)】判断是否是超级作者.[getIsSuperByProductIdList]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【资源中心(消)】判断是否是超级作者,<END>");
}
return resultMap;
}
} }
package com.pcloud.book.consumer.settlement;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.settlementcenter.record.service.SettlementService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Component("settlementConsr")
public class SettlementConsr {
/**
* logger
*/
private static final Logger LOGGER = LoggerFactory.getLogger(SettlementConsr.class);
@Autowired
private SettlementService settlementService;
@ParamLog(value = "获取收益", isBefore = false, isAfterReturn = false)
public Map<Long, BigDecimal> getWXGroupQrcodeIncomeByAdviser(List<Long> groupQrcodeIds, Long adviserId) throws BizException {
if (ListUtils.isEmpty(groupQrcodeIds) || adviserId == null) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(settlementService.getWXGroupQrcodeIncomeByAdviser(groupQrcodeIds, adviserId), Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("获取收益.[getWXGroupQrcodeIncomeByAdviser]:" + e.getMessage(), e);
}
return null;
}
}
package com.pcloud.book.consumer.trade;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto;
import com.pcloud.facade.tradecenter.service.OrderFormService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* @Author:lili
* @Desr:交易调用
* @Date:2019/5/7 17:22
*/
@Component("tradeConsr")
public class TradeConsr {
/**
* logger
*/
private static final Logger LOGGER = LoggerFactory.getLogger(TradeConsr.class);
@Autowired
private OrderFormService orderFormService;
public Map<Long, QrGroupBuyDetailDto> getQrGroupSaleDetail(List<Long> qrcodeIds) throws BizException {
if (ListUtils.isEmpty(qrcodeIds)) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(orderFormService.getQrGroupSaleDetail(qrcodeIds)
, Long.class, QrGroupBuyDetailDto.class);
} catch (Exception e) {
LOGGER.error("获取购买次数.[getQrGroupSaleDetail]:" + e.getMessage(), e);
}
return null;
}
}
package com.pcloud.book.consumer.wechatgroup;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO;
import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.pcloud.wechatgroup.group.dto.RobotReplyDTO;
import com.pcloud.wechatgroup.group.service.GroupMemberService;
import com.pcloud.wechatgroup.message.dto.GroupChatCountDTO;
import com.pcloud.wechatgroup.message.service.MessageService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Component("wechatGroupConsr")
public class WechatGroupConsr {
/**
* logger
*/
private static final Logger LOGGER = LoggerFactory.getLogger(ProductConsr.class);
@Autowired
private GroupMemberService groupMemberService;
@Autowired
private MessageService messageService;
/**
* 根据群号获取机器人微信号
*/
public String getRobotIdByGroupId(String groupId) throws BizException {
LOGGER.info("【根据群号获取机器人微信号,<START>.[groupId]=" + groupId + "]");
if (groupId == null) {
return null;
}
try {
return ResponseHandleUtil.parseResponse(groupMemberService.getRobotIdByGroupId(groupId), String.class);
} catch (BizException e) {
LOGGER.warn("根据群号获取机器人微信号失败:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("根据群号获取机器人微信号.[getRobotIdByGroupId]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【根据群号获取机器人微信号,<END>");
}
}
@ParamLog(value = "累计进群人数与今日进群人数", isBefore = false, isAfterReturn = false)
public Map<String, GroupMemberStatisDTO> listGroupMemberStatisInfo(List<String> weixinGroupIds) throws BizException {
if (ListUtils.isEmpty(weixinGroupIds)) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(groupMemberService.mapGroupMemberStatisInfo(weixinGroupIds), String.class, GroupMemberStatisDTO.class);
} catch (Exception e) {
LOGGER.error("获取累计进群人数与今日进群人数.[listGroupMemberStatisInfo]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "活跃人数与总发言数", isBefore = false, isAfterReturn = false)
public Map<Long, GroupChatCountDTO> getChatCountByGroup(List<Long> groupQrcodeIds, Long bookGroupId) throws BizException {
if (ListUtils.isEmpty(groupQrcodeIds) || bookGroupId == null) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(messageService.getChatCountByGroup(groupQrcodeIds, bookGroupId), Long.class, GroupChatCountDTO.class);
} catch (Exception e) {
LOGGER.error("获取活跃人数与总发言数.[getChatCountByGroup]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "获取退群率", isBefore = false, isAfterReturn = false)
public Map<String, BigDecimal> mapOutGroupRate(List<String> wxGroupIds) throws BizException {
if (ListUtils.isEmpty(wxGroupIds)) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(groupMemberService.mapOutGroupRate(wxGroupIds), String.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("获取退群率失败.[mapOutGroupRate]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "上传群二维码时根据群ID添加群管理员(群主,机器人等)")
public void addGroupManagers(String wxGroupId, String altId) throws BizException {
try {
groupMemberService.addGroupManagers(wxGroupId, altId);
} catch (Exception e) {
LOGGER.error("上传群二维码时根据群ID添加群管理员(群主,机器人等)失败.[addGroupManagers]:" + e.getMessage(), e);
}
}
@ParamLog(value = "获取所有机器人微信号")
public List<String> listAllRobotWxId() throws BizException {
try {
List<String> wxids = ResponseHandleUtil.parseListResponse(groupMemberService.listAllRobotWxId(), String.class);
return wxids;
} catch (Exception e) {
LOGGER.error("获取所有机器人微信号失败.[listAllRobotWxId]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "设置第一个关键词回复")
public void addFirstRobotReplyRecord(RobotReplyDTO robotReplyDTO) throws BizException {
try {
groupMemberService.addFirstRobotReplyRecord(robotReplyDTO);
} catch (Exception e) {
LOGGER.error("设置第一个关键词回复失败.[addFirstRobotReplyRecord]:" + e.getMessage(), e);
}
}
@ParamLog(value = "获取机器人信息")
public GroupRobotDTO getRobotInfoByWxUserId(String wxRobotId) throws BizException {
try {
return ResponseHandleUtil.parseResponse(groupMemberService.getRobotInfoByWxUserId(wxRobotId), GroupRobotDTO.class);
} catch (Exception e) {
LOGGER.error("获取机器人信息失败.[getRobotInfoByWxUserId]:" + e.getMessage(), e);
}
return null;
}
}
package com.pcloud.book.group.biz;
import com.pcloud.book.group.entity.BookClassifyBuyRecord;
/**
* @author lily
* @date 2019/4/19 11:27
*/
public interface BookClassifyBuyRecordBiz {
/**
* @Author:lili
* @Desr:新增购买记录
* @Date:2019/4/19 11:40
*/
void insertRecord(BookClassifyBuyRecord bookClassifyBuyRecord);
/**
* @Author:lili
* @Desr:校验用户是否购买
* @Date:2019/4/19 12:00
*/
Boolean checkUserBuy(Long wechatUserId, Long classifyId);
}
package com.pcloud.book.group.biz; package com.pcloud.book.group.biz;
import java.util.List;
import java.util.Map; import java.util.Map;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
...@@ -32,6 +35,14 @@ public interface BookGroupBiz { ...@@ -32,6 +35,14 @@ public interface BookGroupBiz {
/** /**
* 获取社群书群二维码信息 * 获取社群书群二维码信息
* @param bookGroupId 群二维码ID
* @return
* @throws BizException
*/
BookGroupDTO getBookGroupInfo4Wechat(Long bookGroupId) throws BizException;
/**
* 获取社群书群二维码信息
* @param bookId 书刊ID * @param bookId 书刊ID
* @param channelId 运营ID * @param channelId 运营ID
* @param adviserId 编辑ID * @param adviserId 编辑ID
...@@ -84,6 +95,14 @@ public interface BookGroupBiz { ...@@ -84,6 +95,14 @@ public interface BookGroupBiz {
PageBean listBookGroup4Adviser(Map<String, Object> paramMap, PageParam pageParam, Long adviserId) throws BizException; PageBean listBookGroup4Adviser(Map<String, Object> paramMap, PageParam pageParam, Long adviserId) throws BizException;
/** /**
* 获取社群书列表(编辑)
* @param paramMap 参数Map
* @return
* @throws BizException
*/
List<BookDto> listSimpleBookGroup4Adviser(Map<String, Object> paramMap) throws BizException;
/**
* 获取未创建社群码的书刊列表 * 获取未创建社群码的书刊列表
* @param paramMap 参数Map * @param paramMap 参数Map
* @param pageParam 分页参数 * @param pageParam 分页参数
...@@ -95,6 +114,13 @@ public interface BookGroupBiz { ...@@ -95,6 +114,13 @@ public interface BookGroupBiz {
/** /**
* @Author:lili * @Author:lili
* @Desr:获取群二维码名称以及商品id
* @Date:2019/4/18 9:57
*/
QrcodeNameAndProIdDTO getQrcodeNameAndProId(Long bookGroupId) throws BizException;
/**
* @Author:lili
* @Desr:获取排序方式 * @Desr:获取排序方式
* @Date:2019/4/19 14:57 * @Date:2019/4/19 14:57
*/ */
...@@ -106,4 +132,19 @@ public interface BookGroupBiz { ...@@ -106,4 +132,19 @@ public interface BookGroupBiz {
* @Date:2019/4/19 14:58 * @Date:2019/4/19 14:58
*/ */
void updateRankType(Long bookGroupId, Integer rankType) throws BizException; void updateRankType(Long bookGroupId, Integer rankType) throws BizException;
/**
* 编辑获取社群码总数量
* @param adviserId 编辑ID
* @return
* @throws BizException
*/
Map<String, Object> getTotalBookGroupCount(Long adviserId) throws BizException;
/**
* @Author:lili
* @Desr:获取备用二维码
* @Date:2019/5/13 15:09
*/
String getSpareQr(Long bookGroupId);
} }
package com.pcloud.book.group.biz;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
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.vo.AddClassifyVO;
import com.pcloud.book.group.vo.BookGroupQrcodeStatisticVO;
import com.pcloud.book.group.vo.ClassifyAndGroupCountVO;
import com.pcloud.book.group.vo.ClassifyAndUserCountVO;
import com.pcloud.book.group.vo.ClassifyNameVO;
import com.pcloud.book.group.vo.ClassifyVO;
import com.pcloud.book.group.vo.GroupQrcode4ClassifyVO;
import com.pcloud.book.group.vo.GroupQrcodeVO;
import com.pcloud.book.group.vo.ListBookGroupQrcodeParamVO;
import com.pcloud.book.group.vo.ListClassify4WechatVO;
import com.pcloud.book.group.vo.ListClassifyVO;
import com.pcloud.book.group.vo.ListGroupQrParam;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.book.group.vo.UpdateClassifyVO;
import com.pcloud.book.group.vo.UpdateRankVO;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/16 21:02
*/
public interface BookGroupClassifyBiz {
/**
* @Author:lili
* @Desr:新增分类
* @Date:2019/4/17 15:53
*/
void addClassify(AddClassifyVO addClassifyVO, Long partyId);
/**
* @Author:lili
* @Desr:更新分类
* @Date:2019/4/17 15:53
*/
void updateClassify(UpdateClassifyVO updateClassifyVO, Long partyId);
/**
* @Author:lili
* @Desr:获取分类列表
* @Date:2019/4/17 15:53
*/
List<ListClassifyVO> listAllClassify(Long bookGroupId);
/**
* @Author:lili
* @Desr:删除群分类
* @Date:2019/4/17 15:57
*/
void deleteClassify(Long classifyId, Long partyId);
/**
* @Author:lili
* @Desr:获取群分类
* @Date:2019/4/18 9:53
*/
ClassifyVO getClassify(Long classifyId);
/**
* @Author:lili
* @Desr:根据规格对应分类信息
* @Date:2019/4/19 11:46
*/
ClassifyDTO getBaseInfoBySpecId(Long productSpecId);
/**
* @Author:lili
* @Desr:修改排序值
* @Date:2019/4/22 15:53
*/
void updateClassifyRank(UpdateRankVO updateRankVO, Long partyId);
/**
* @Author:lili
* @Desr:获取所有分类
* @Date:2019/4/22 16:01
*/
List<ClassifyNameVO> listClassify(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取分类与群数量
* @Date:2019/4/25 18:03
*/
ClassifyAndGroupCountVO getClassifyAndGroupCount(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取分类与群总人数
* @Date:2019/4/26 14:34
*/
ClassifyAndUserCountVO getClassifyAndUserCount(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取分类社群码名称以及最大群数量
* @Date:2019/4/28 17:25
*/
GroupNameAndMaxSeqDTO getGroupNameAndMaxSeq(Long classifyId);
/**
* @Author:lili
* @Desr:获取分类二维码相关标识
* @Date:2019/4/28 20:32
*/
GroupClassifyQrcodeDTO getClassifyQrcodeInfo(String weixinGroupId);
/**
* @Author:lili
* @Desr:客户端获取分类信息
* @Date:2019/4/29 10:30
*/
List<ListClassify4WechatVO> listClassify4Wechat(Long bookGroupId, Long wechatUserId);
/**
* @Author:lili
* @Desr:客户端根据群分类获取二维码
* @Date:2019/4/29 17:21
*/
GroupQrcode4ClassifyVO getGroupQrcode4ClassifyWechat(Long classifyId, Long wechatUserId);
/**
* @Author:lili
* @Desr:获取编辑所有的群二维码
* @Date:2019/4/30 15:33
*/
PageBeanNew<GroupQrcodeVO> listGroupQrcodeByAdviser(ListGroupQrParam listGroupQrParam, Long adviserId);
/**
* @Author:lili
* @Desr:获取社群码统计数据(分类数,群总人数,群数量)
* @Date:2019/4/30 17:38
*/
Map<Long , BookGroupStatisticDTO> getBookGroupStatistic(List<Long> bookGroupIds);
/**
* @Author:lili
* @Desr:获取单个群统计
* @Date:2019/5/6 16:17
*/
PageBeanNew<BookGroupQrcodeStatisticVO> listBookGroupQrcodeStatistic(ListBookGroupQrcodeParamVO listBookGroupQrcodeParamVO, Long adviserId);
/**
* @Author:lili
* @Desr:单个群统计导出
* @Date:2019/5/6 17:26
*/
void bookGroupQrcodeStatisticExport(List<Long> classifyIds, Long bookGroupId, Long adviserId);
/**
* @Author:lili
* @Desr: 获取编辑的社群码统计数据
* @Date:2019/5/9 11:23
*/
StatisticVO getStatistic4Adviser(Long adviserId);
/**
* @Author:lili
* @Desr: 获取群二维码基本信息
* @Date:2019/5/10 14:50
*/
Map<String,GroupQrcodeBaseDTO> listGroupQrcodeBaseInfo(List<String> weixinGroupIds);
/**
* @Author:lili
* @Desr:获取商品关联群数量与人数
* @Date:2019/5/10 20:18
*/
ProAssocGroupAndUserNumberDTO getProAssocGroupAndUserNumber(Long productId);
}
package com.pcloud.book.group.biz;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
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.ListQrcodeByClassifyParamVO;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/18 15:30
*/
public interface GroupQrcodeBiz {
/**
* @Author:lili
* @Desr:新增微信群二维码
* @Date:2019/4/17 17:44
*/
Long insert(GroupQrcode groupQrcode);
/**
* @Author:lili
* @Desr:根据分类删除微信群
* @Date:2019/4/18 11:55
*/
void deleteByClassifyId(Long classifyId);
/**
* @Author:lili
* @Desr:批量获取群数量与群总人数
* @Date:2019/4/18 20:08
*/
Map<Long, GroupAndUserNumberDTO> listGroupAndUserNumber(List<Long> classifyIds);
/**
* @Author:lili
* @Desr:获取分类下二维码
* @Date:2019/4/17 15:53
*/
PageBeanNew<ClassifyQrcodeVO> listQrcodeByClassify(ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO);
/**
* @Author:lili
* @Desr:修改微信群名称
* @Date:2019/4/1 11:22
*/
void modifyWechatGroupName(String wechatGroupName, Long id, Long updateUser);
/**
* @Author:lili
* @Desr:新增一个用户
* @Date:2019/4/28 14:45
*/
void addOneUser(String wechatGroupId, Integer memberCount);
/**
* @Author:lili
* @Desr:获取群二维码相关信息
* @Date:2019/4/29 14:46
*/
Map<Long,GroupQrcodeInfoDTO> listQrcodeInfoByIds(List<Long> groupQrcodeIds);
/**
* @Author:lili
* @Desr:获取群基本信息
* @Date:2019/5/6 16:12
*/
GroupQrcodeBaseInfoVO getBaseById(Long groupQrcodeId);
}
package com.pcloud.book.group.biz;
import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.dto.WeixinQrcodeCountDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.vo.QrStatisticsVO;
import com.pcloud.book.group.vo.WeixinQrcodeVO;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 16:10
*/
public interface WeixinQrcodeBiz {
/**
* @Author:lili
* @Desr:从二维码获取一个二维码
* @Date:2019/4/17 16:17
*/
WeixinQrcodeDTO getOneQrcode();
/**
* @Author:lili
* @Desr:发送不足100提醒邮件
* @Date:2019/4/1 11:22
*/
void sendMsgByQrCount();
/**
* @Author:lili
* @Desr:定时更新二维码
* @Date:2019/3/12 9:26
*/
void setUpdateQrUrlByQuartz();
/**
* @Author:lili
* @Desr:发送更新二维码地址请求
* @Date:2019/3/1 11:38
*/
void setUpdateQrUrl();
/**
* @Author:lili
* @Desr: 更新二维码地址
* @Date:2019/3/12 9:27
*/
void updateQrUrl(UpdateQrDTO updateQrDTO);
/**
* @Author:lili
* @Desr:处理有问题的二维码/或者未处理的二维码
* @Date:2019/3/12 9:27
*/
void setUpdateQr4Error(List<Long> ids);
/**
* @Author:lili
* @Desr:发送更新群名称请求
* @Date:2019/4/2 15:07
*/
void sendChangeGroupNameRequest(List<Long> ids);
/**
* @Author:lili
* @Desr:同步更新微信群id
* @Date:2019/4/3 11:07
*/
void syncWeixinGroupId(Long weixinQrcodeId, String weixinGroupId);
/**
* @Author:lili
* @Desr:发送同步微信id请求
* @Date:2019/4/15 9:43
*/
void sendSyncWeixinGroupIdRequest(List<Long> ids);
/**
* @Author:lili
* @Desr:新增二维码
* @Date:2019/4/26 15:36
*/
void addQrcode(WeixinQrcodeVO weixinQrcodeVO, Long partyId);
/**
* @Author:lili
* @Desr:获取机器人二维码分配情况
* @Date:2019/4/26 16:19
*/
Map<Long,WeixinQrcodeCountDTO> listWeixinQrcodeCountByRobot(List<Long> robotIds);
/**
* @Author:lili
* @Desr:更新使用状态
* @Date:2019/4/28 17:15
*/
void updateUseState(Long weixinQrcodeId, Integer useState);
/**
* 平台端二维码统计数据
*/
QrStatisticsVO getQrStatistics();
}
package com.pcloud.book.group.biz.impl;
import com.pcloud.book.group.biz.BookClassifyBuyRecordBiz;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.dao.BookClassifyBuyRecordDao;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.group.entity.BookClassifyBuyRecord;
import com.pcloud.common.core.aspect.ParamLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author lily
* @date 2019/4/19 11:28
*/
@Component("bookClassifyBuyRecordBiz")
public class BookClassifyBuyRecordBizImpl implements BookClassifyBuyRecordBiz {
@Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired
private BookClassifyBuyRecordDao bookClassifyBuyRecordDao;
@Override
@ParamLog("新增记录")
public void insertRecord(BookClassifyBuyRecord bookClassifyBuyRecord) {
//通过规格id拿对应信息
ClassifyDTO classifyDTO = bookGroupClassifyBiz.getBaseInfoBySpecId(bookClassifyBuyRecord.getProductSpecId());
if (classifyDTO == null) {
return;
}
bookClassifyBuyRecord.setBookId(classifyDTO.getBookId());
bookClassifyBuyRecord.setChannelId(classifyDTO.getChannelId());
bookClassifyBuyRecord.setClassifyId(classifyDTO.getId());
bookClassifyBuyRecord.setBookQrcodeId(classifyDTO.getBookGroupId());
bookClassifyBuyRecordDao.insert(bookClassifyBuyRecord);
}
@Override
@ParamLog("校验用户是否购买")
public Boolean checkUserBuy(Long wechatUserId, Long classifyId) {
return bookClassifyBuyRecordDao.checkUserBuy(wechatUserId, classifyId);
}
}
...@@ -8,6 +8,7 @@ import java.util.Map; ...@@ -8,6 +8,7 @@ import java.util.Map;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
...@@ -17,11 +18,15 @@ import com.pcloud.book.book.dto.BookDto; ...@@ -17,11 +18,15 @@ import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.set.BookSet; import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.dao.BookGroupDao; import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.ProductTypeConstant; import com.pcloud.common.core.constant.ProductTypeConstant;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
...@@ -34,6 +39,8 @@ import com.pcloud.resourcecenter.product.dto.AddAppProductParamDTO; ...@@ -34,6 +39,8 @@ import com.pcloud.resourcecenter.product.dto.AddAppProductParamDTO;
import com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO; import com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO;
import com.pcloud.resourcecenter.product.entity.Product; import com.pcloud.resourcecenter.product.entity.Product;
import com.pcloud.resourcecenter.product.service.ProductService; import com.pcloud.resourcecenter.product.service.ProductService;
import com.pcloud.settlementcenter.record.service.SettlementService;
import com.pcloud.wechatgroup.group.service.GroupMemberService;
/** /**
* Description 社群书群二维码业务逻辑层接口实现类 * Description 社群书群二维码业务逻辑层接口实现类
...@@ -61,6 +68,12 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -61,6 +68,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
private BookSet bookSet; private BookSet bookSet;
@Autowired @Autowired
private BookDao bookDao; private BookDao bookDao;
@Autowired
private SettlementService settlementService;
@Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired
private GroupMemberService groupMemberService;
/** /**
* 创建社群书时生成群二维码 * 创建社群书时生成群二维码
...@@ -116,6 +129,11 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -116,6 +129,11 @@ public class BookGroupBizImpl implements BookGroupBiz {
} }
} }
} }
BookDto bookDto = bookBiz.getBaseById(bookGroupDTO.getBookId());
if (null != bookDto) {
bookDto.setBookName(null != bookDto.getBookName() ? StringUtil.addBracket(bookDto.getBookName()) : null);
bookGroupDTO.setBookInfo(bookDto);
}
return bookGroupDTO; return bookGroupDTO;
} }
...@@ -123,6 +141,14 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -123,6 +141,14 @@ public class BookGroupBizImpl implements BookGroupBiz {
* 获取社群书群二维码信息 * 获取社群书群二维码信息
*/ */
@Override @Override
public BookGroupDTO getBookGroupInfo4Wechat(Long bookGroupId) throws BizException {
return bookGroupDao.getDTOById(bookGroupId);
}
/**
* 获取社群书群二维码信息
*/
@Override
public BookGroupDTO getBookGroupInfoByBookId(Long bookId, Long channelId, Long adviserId) throws BizException { public BookGroupDTO getBookGroupInfoByBookId(Long bookId, Long channelId, Long adviserId) throws BizException {
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOByBookId(bookId, channelId, adviserId); BookGroupDTO bookGroupDTO = bookGroupDao.getDTOByBookId(bookId, channelId, adviserId);
if (null == bookGroupDTO) { if (null == bookGroupDTO) {
...@@ -158,6 +184,11 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -158,6 +184,11 @@ public class BookGroupBizImpl implements BookGroupBiz {
} }
} }
} }
BookDto bookDto = bookBiz.getBaseById(bookId);
if (null != bookDto) {
bookDto.setBookName(null != bookDto.getBookName() ? StringUtil.addBracket(bookDto.getBookName()) : null);
bookGroupDTO.setBookInfo(bookDto);
}
return bookGroupDTO; return bookGroupDTO;
} }
...@@ -233,6 +264,9 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -233,6 +264,9 @@ public class BookGroupBizImpl implements BookGroupBiz {
if (null != bookDto) { if (null != bookDto) {
result.put("bookName", StringUtil.addBracket(bookDto.getBookName())); result.put("bookName", StringUtil.addBracket(bookDto.getBookName()));
} }
result.put("isDelete", bookGroupDTO.getIsDelete());
} else {
result.put("isDelete", true);
} }
return result; return result;
} }
...@@ -249,19 +283,51 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -249,19 +283,51 @@ public class BookGroupBizImpl implements BookGroupBiz {
// 设置是否被冻结 // 设置是否被冻结
bookSet.setFreezeStatus(pageBean.getRecordList()); bookSet.setFreezeStatus(pageBean.getRecordList());
// 填充社群书数据 // 填充社群书数据
List<Long> bookGroupIds = new ArrayList<>();
pageBean.getRecordList().forEach(obj -> bookGroupIds.add(((BookDto) obj).getBookGroupId()));
ResponseEntity<ResponseDto<Map<Long, BigDecimal>>> responseEntity = settlementService.getWXGroupIncomeByAdviser(bookGroupIds, adviserId);
Map<Long, BigDecimal> incomeMap = ResponseHandleUtil.parseMap(responseEntity, Long.class, BigDecimal.class);
Map<Long, BookGroupStatisticDTO> statisMap = bookGroupClassifyBiz.getBookGroupStatistic(bookGroupIds);
Map<Long, Integer> scanMap = ResponseHandleUtil.parseMap(groupMemberService.getScanUserCountByGroup(bookGroupIds), Long.class, Integer.class);
for (Object object : pageBean.getRecordList()) { for (Object object : pageBean.getRecordList()) {
BookDto bookDto = (BookDto) object; BookDto bookDto = (BookDto) object;
bookDto.setGroupQrcodeLink(bookGroupQrcodeDomain + "/" + bookDto.getBookGroupId()); Long bookGroupId = bookDto.getBookGroupId();
bookDto.setScanCount(0L); bookDto.setGroupQrcodeLink(bookGroupQrcodeDomain + "/" + bookGroupId);
bookDto.setClassifyCount(0L); bookDto.setBookName(null != bookDto.getBookName() ? StringUtil.addBracket(bookDto.getBookName()) : null);
bookDto.setGroupPersonCount(0L); if (!MapUtils.isEmpty(statisMap) && statisMap.containsKey(bookGroupId)) {
bookDto.setGroupCount(0L); BookGroupStatisticDTO dto = statisMap.get(bookGroupId);
bookDto.setTotalIncome(BigDecimal.ZERO); bookDto.setClassifyCount(null != dto.getClassifyCount() ? dto.getClassifyCount().longValue() : 0L);
bookDto.setGroupCount(null != dto.getGroupNumber() ? dto.getGroupNumber().longValue() : 0L);
bookDto.setGroupPersonCount(null != dto.getUserNumber() ? dto.getUserNumber().longValue() : 0L);
} else {
bookDto.setClassifyCount(0L);
bookDto.setGroupPersonCount(0L);
bookDto.setGroupCount(0L);
}
if (!MapUtils.isEmpty(scanMap) && scanMap.containsKey(bookGroupId)) {
bookDto.setScanCount(null != scanMap.get(bookGroupId) ? scanMap.get(bookGroupId).longValue() : 0L);
} else {
bookDto.setScanCount(0L);
}
if (!MapUtils.isEmpty(incomeMap) && incomeMap.containsKey(bookGroupId)) {
BigDecimal income = incomeMap.get(bookGroupId);
bookDto.setTotalIncome(null != income ? income.setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO);
} else {
bookDto.setTotalIncome(BigDecimal.ZERO);
}
} }
return pageBean; return pageBean;
} }
/** /**
* 获取社群书列表(编辑)
*/
@Override
public List<BookDto> listSimpleBookGroup4Adviser(Map<String, Object> paramMap) throws BizException {
return bookDao.listSimpleBookGroup4Adviser(paramMap);
}
/**
* 获取未创建社群码的书刊列表 * 获取未创建社群码的书刊列表
*/ */
@Override @Override
...@@ -274,6 +340,12 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -274,6 +340,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
} }
@Override @Override
@ParamLog("获取社群码名称以及商品标识")
public QrcodeNameAndProIdDTO getQrcodeNameAndProId(Long bookGroupId) throws BizException {
return bookGroupDao.getQrcodeNameAndProId(bookGroupId);
}
@Override
@ParamLog("获取排序类型") @ParamLog("获取排序类型")
public Integer getRankType(Long bookGroupId) throws BizException { public Integer getRankType(Long bookGroupId) throws BizException {
return bookGroupDao.getRankType(bookGroupId); return bookGroupDao.getRankType(bookGroupId);
...@@ -284,4 +356,20 @@ public class BookGroupBizImpl implements BookGroupBiz { ...@@ -284,4 +356,20 @@ public class BookGroupBizImpl implements BookGroupBiz {
public void updateRankType(Long bookGroupId, Integer rankType) throws BizException { public void updateRankType(Long bookGroupId, Integer rankType) throws BizException {
bookGroupDao.updateRankType(bookGroupId, rankType); bookGroupDao.updateRankType(bookGroupId, rankType);
} }
/**
* 编辑获取社群码总数量
*/
@Override
public Map<String, Object> getTotalBookGroupCount(Long adviserId) throws BizException {
Map<String, Object> result = new HashMap<>();
Integer bookGroupCount = bookGroupDao.getBookGroupCount(adviserId);
result.put("bookGroupCount", bookGroupCount);
return result;
}
@Override
public String getSpareQr(Long bookGroupId) {
return bookGroupDao.getSpareQr(bookGroupId);
}
} }
package com.pcloud.book.group.dao;
import com.pcloud.book.group.entity.BookClassifyBuyRecord;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @author lily
* @date 2019/4/19 11:55
*/
public interface BookClassifyBuyRecordDao extends BaseDao<BookClassifyBuyRecord> {
/**
* @Author:lili
* @Desr:校验用户是否购买
* @Date:2019/4/19 12:01
*/
Boolean checkUserBuy(Long wechatUserId, Long classifyId);
/**
* @Author:lili
* @Desr:校验用户是否购买
* @Date:2019/4/19 12:01
*/
List<Long> checkUsersBuy(List<Long> classifyIds, Long wechatUserId);
}
package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
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.vo.BookGroupQrcodeStatisticVO;
import com.pcloud.book.group.vo.ClassifyNameVO;
import com.pcloud.book.group.vo.ClassifyVO;
import com.pcloud.book.group.vo.GroupQrcode4ClassifyVO;
import com.pcloud.book.group.vo.ListClassify4WechatVO;
import com.pcloud.book.group.vo.ListClassifyVO;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 11:20
*/
public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
/**
* @Author:lili
* @Desr:获取是否有该分类
* @Date:2019/4/17 17:57
*/
Boolean isHaveThisClassify(String classify, Long classifyId, Long bookGroupId);
/**
* @Author:lili
* @Desr:获取分类
* @Date:2019/4/18 10:19
*/
ClassifyVO getClassify(Long classifyId);
/**
* @Author:lili
* @Desr:获取分类
* @Date:2019/4/18 10:19
*/
ClassifyDTO getById(Long classifyId);
/**
* @Author:lili
* @Desr:更新规格标识
* @Date:2019/4/18 11:32
*/
void updateSpecId(Long id, Long productSpecId);
/**
* @Author:lili
* @Desr:删除分类
* @Date:2019/4/18 11:48
*/
void deleteClassify(Long classifyId, Long partyId);
/**
* @Author:lili
* @Desr:、获取分类个数
* @Date:2019/4/18 16:28
*/
Integer getClassifyCount(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取所有分类列表
* @Date:2019/4/18 19:46
*/
List<ListClassifyVO> listAllClassifyByRank(Long bookGroupId);
/**
* @Author:lili
* @Desr:根据规格获取分类基本信息
* @Date:2019/4/19 11:48
*/
ClassifyDTO getBaseInfoBySpecId(Long productSpecId);
/**
* @Author:lili
* @Desr:获取分类列表(排序方式是群总人数)
* @Date:2019/4/19 15:13
*/
List<ListClassifyVO> listAllClassifyByUser(Long bookGroupId);
/**
* @Author:lili
* @Desr:更排序分类值
* @Date:2019/4/22 15:55
*/
void updateClassifyRank(BookGroupClassify bookGroupClassify);
/**
* @Author:lili
* @Desr:获取所有分类名称(排序值)
* @Date:2019/4/22 16:03
*/
List<ClassifyNameVO> listClassifyByRank(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取所有分类名称(总人数)
* @Date:2019/4/22 16:03
*/
List<ClassifyNameVO> listClassifyByUser(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取群数量
* @Date:2019/4/26 14:58
*/
Integer getGroupCount(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取总用户数
* @Date:2019/4/26 15:02
*/
Integer getUserNumberCount(Long bookGroupId);
/**
* @Author:lili
* @Desr:获取分类社群码名称以及最大群数量
* @Date:2019/4/28 17:26
*/
GroupNameAndMaxSeqDTO getGroupNameAndMaxSeq(Long classifyId);
/**
* @Author:lili
* @Desr:获取分类二维码相关标识
* @Date:2019/4/28 20:32
*/
GroupClassifyQrcodeDTO getClassifyQrcodeInfo(String weixinGroupId);
/**
* @Author:lili
* @Desr:获取所有的分类
* @Date:2019/4/29 11:23
*/
List<ListClassify4WechatVO> listClassify4Wechat(Long bookGroupId, Integer rankType);
/**
* @Author:lili
* @Desr:客户端获取分类使用二维码
* @Date:2019/4/30 10:06
*/
GroupQrcode4ClassifyVO getClassifyQrcode(Long classifyId, Integer changeNumber);
/**
* @Author:lili
* @Desr:获取社群码统计数据(分类数,群总人数,群数量)
* @Date:2019/4/30 17:48
*/
Map<Long,BookGroupStatisticDTO> getBookGroupStatistic(List<Long> bookGroupIds);
/**
* @Author:lili
* @Desr:获取单个群统计数据
* @Date:2019/5/6 17:28
*/
List<BookGroupQrcodeStatisticVO> listBookGroupQrcodeStatistic(List<Long> classifyIds, Long bookGroupId);
/**
* @Author:lili
* @Desr:
* @Date:2019/5/9 11:25
*/
StatisticVO getStatistic4Adviser(Long adviserId);
/**
* @Author:lili
* @Desr:获取群二维码基本信息
* @Date:2019/5/10 14:51
*/
Map<String,GroupQrcodeBaseDTO> listGroupQrcodeBaseInfo(List<String> weixinGroupIds);
/**
* @Author:lili
* @Desr:获取商品关联群数量与人数
* @Date:2019/5/10 20:39
*/
ProAssocGroupAndUserNumberDTO getProAssocGroupAndUserNumber(Long productId);
/**
* @Author:lili
* @Desr:获取最大的排序值
* @Date:2019/5/14 15:52
*/
Integer getMaxRank(Long bookGroupId);
}
package com.pcloud.book.group.dao; package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -45,6 +46,20 @@ public interface BookGroupDao extends BaseDao<BookGroup> { ...@@ -45,6 +46,20 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
long recoverByBookId(Long bookId, Long channelId, Long adviserId); long recoverByBookId(Long bookId, Long channelId, Long adviserId);
/** /**
* 获取编辑社群书数量
* @param adviserId 编辑ID
* @return
*/
Integer getBookGroupCount(Long adviserId);
/**
* @Author:lili
* @Desr:获取群二维码名称与商品标识
* @Date:2019/4/18 9:58
*/
QrcodeNameAndProIdDTO getQrcodeNameAndProId(Long bookGroupId);
/**
* @Author:lili * @Author:lili
* @Desr:获取排序类型 * @Desr:获取排序类型
* @Date:2019/4/19 15:01 * @Date:2019/4/19 15:01
...@@ -57,4 +72,11 @@ public interface BookGroupDao extends BaseDao<BookGroup> { ...@@ -57,4 +72,11 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
* @Date:2019/4/19 15:01 * @Date:2019/4/19 15:01
*/ */
void updateRankType(Long bookGroupId, Integer rankType); void updateRankType(Long bookGroupId, Integer rankType);
/**
* @Author:lili
* @Desr:获取备用二维码
* @Date:2019/5/13 15:10
*/
String getSpareQr(Long bookGroupId);
} }
package com.pcloud.book.group.dao;
import com.pcloud.book.group.entity.BookQrcodeUser;
import com.pcloud.book.group.vo.GroupQrcode4ClassifyVO;
import com.pcloud.common.core.dao.BaseDao;
/**
* @author lily
* @date 2019/4/30 11:17
*/
public interface BookQrcodeUserDao extends BaseDao<BookQrcodeUser> {
/**
* @Author:lili
* @Desr:获取用户配置的二维码
* @Date:2019/4/29 17:52
*/
GroupQrcode4ClassifyVO getUserQrcode(Long classifyId, Long wechatUserId);
}
package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 16:38
*/
public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
/**
* @Author:lili
* @Desr:根据分类标识删除微信群
* @Date:2019/4/18 11:56
*/
void deleteByClassifyId(Long classifyId);
/**
* @Author:lili
* @Desr:批量获取群数量与群总人数
* @Date:2019/4/18 20:09
*/
Map<Long, GroupAndUserNumberDTO> listGroupAndUserNumber(List<Long> classifyIds);
/**
* @Author:lili
* @Desr: 修改群名称
* @Date:2019/4/19 15:53
*/
void modifyNameById(String wechatGroupName, Long id, Long updateUser);
/**
* @Author:lili
* @Desr:更新二维码url
* @Date:2019/3/11 20:47
*/
void updateQrUrl(UpdateQrDTO updateQrDTO);
/**
* @Author:lili
* @Desr:获取修改群信息
* @Date:2019/4/2 16:52
*/
List<ChangeGroupNameDTO> getWechatGroupInfo(List<Long> ids);
/**
* @Author:lili
* @Desr:同步微信群标识
* @Date:2019/4/3 11:14
*/
void syncWeixinGroupId(Long weixinQrcodeId, String weixinGroupId);
/**
* @Author:lili
* @Desr:更新用户数
* @Date:2019/4/28 14:50
*/
void updateUserNumber(String wechatGroupId, Integer memberCount);
/**
* @Author:lili
* @Desr: 获取分类二维码基本信息
* @Date:2019/4/28 15:31
*/
GroupQrcodeDTO getGroupQrcodeInfo(String weixinGroupId);
/**
* @Author:lili
* @Desr:更新群使用状态
* @Date:2019/4/28 16:57
*/
void updateUseState(Long id, Integer useState);
/**
* @Author:lili
* @Desr:修改二维码状态
* @Date:2019/4/28 17:20
*/
void changeQrcodeState(Long id, Integer qrcode_state);
/**
* @Author:lili
* @Desr:获取群二维码相关信息
* @Date:2019/4/29 14:48
*/
Map<Long,GroupQrcodeInfoDTO> listQrcodeInfoByIds(List<Long> groupQrcodeIds);
/**
* @Author:lili
* @Desr:获取群二维码基本信息
* @Date:2019/5/6 16:13
*/
GroupQrcodeBaseInfoVO getBaseById(Long groupQrcodeId);
/**
* @Author:lili
* @Desr:获取更新群名称的参数
* @Date:2019/5/7 18:14
*/
ChangeGroupNameDTO getUpdateGroupNameParam(Long id);
}
package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.SyncWeixinGroupIdRequestDTO;
import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.dto.WeixinQrcodeCountDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.entity.WeixinQrcode;
import com.pcloud.book.group.vo.QrStatisticsVO;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 16:19
*/
public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> {
/**
* @Author:lili
* @Desr:获取一个微信群
* @Date:2019/3/12 18:04
*/
WeixinQrcodeDTO getOneWechatGroup();
/**
* @Author:lili
* @Desr:设置为已使用
* @Date:2019/3/12 18:11
*/
Integer setIsUseById(Long id);
/**
* @Author:lili
* @Desr:获取二维码统计数量
* @Date:2019/4/19 16:10
*/
QrStatisticsVO getQrStatistics();
/**
* @Author:lili
* @Desr:将处理中的二维码修改为处理失败
* @Date:2019/3/7 15:21
*/
void updateStatusToError();
/**
* @Author:lili
* @Desr:按时间顺序获取未更新的二维码
* @Date:2019/4/19 16:16
*/
List<UpdateQrDTO> getInitialQr(int currentPage, Integer numPerPage);
/**
* @Author:lili
* @Desr:设置未正在更新中
* @Date:2019/4/19 16:17
*/
void setOnUpdate(List<Long> qrIds);
/**
* @Author:lili
* @Desr:更新二维码图片地址
* @Date:2019/3/5 9:52
*/
void updateQrUrl(UpdateQrDTO updateQrDTO);
/**
* @Author:lili
* @Desr:获取所有正在处理的二维码数量
* @Date:2019/3/7 10:55
*/
Integer getQrOnHandleCount();
/**
* @Author:lili
* @Desr:获取正在处理的二维码
* @Date:2019/3/5 20:20
*/
List<UpdateQrDTO> getQrOnHandle(Integer currentPage, Integer numPerPage, List<Long> ids);
/**
* @Author:lili
* @Desr:更新微信群id
* @Date:2019/4/2 15:04
*/
void updateWeixinGroupId(Long weixinQrcodeId, String weixinGroupId);
/**
* @Author:lili
* @Desr: 获取没有微信群id的二维码
* @Date:2019/4/15 11:44
*/
List<SyncWeixinGroupIdRequestDTO> listNoIdQrcode(List<Long> ids);
/**
* @Author:lili
* @Desr:获取机器人对应二维码统计数据
* @Date:2019/4/26 16:43
*/
Map<Long,WeixinQrcodeCountDTO> listWeixinQrcodeCountByRobot(List<Long> robotIds);
/**
* @Author:lili
* @Desr:更新二维码使用状态
* @Date:2019/4/28 16:59
*/
void updateUseState(Long id, Integer useState);
/**
* @Author:lili
* @Desr:获取二维码总个数
* @Date:2019/5/7 11:50
*/
Integer getQrcodeCount();
/**
* @Author:lili
* @Desr:校验存在性
* @Date:2019/5/10 12:49
*/
Boolean checkExist(String weixinGroupId);
/**
* @Author:lili
* @Desr: 更新二维码状态
* @Date:2019/5/13 14:35
*/
void updateState(Long weixinQrcodeId, Integer updateState);
}
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.BookClassifyBuyRecordDao;
import com.pcloud.book.group.entity.BookClassifyBuyRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/19 11:56
*/
@Component("bookClassifyBuyRecordDao")
public class BookClassifyBuyRecordDaoImpl extends BaseDaoImpl<BookClassifyBuyRecord> implements BookClassifyBuyRecordDao {
@Override
public Boolean checkUserBuy(Long wechatUserId, Long classifyId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("wechatUserId", wechatUserId);
paramMap.put("classifyId", classifyId);
return this.getSqlSession().selectOne(this.getStatement("checkUserBuy"), paramMap);
}
@Override
public List<Long> checkUsersBuy(List<Long> classifyId, Long wechatUserId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("wechatUserId", wechatUserId);
paramMap.put("classifyIds", classifyId);
return this.getSqlSession().selectList(this.getStatement("checkUsersBuy"), paramMap);
}
}
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
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.vo.BookGroupQrcodeStatisticVO;
import com.pcloud.book.group.vo.ClassifyNameVO;
import com.pcloud.book.group.vo.ClassifyVO;
import com.pcloud.book.group.vo.GroupQrcode4ClassifyVO;
import com.pcloud.book.group.vo.ListClassify4WechatVO;
import com.pcloud.book.group.vo.ListClassifyVO;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 11:21
*/
@Component("bookGroupClassifyDao")
public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> implements BookGroupClassifyDao {
@Override
public Boolean isHaveThisClassify(String classify, Long classifyId, Long bookGroupId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classify", classify);
paramMap.put("bookGroupId", bookGroupId);
paramMap.put("classifyId", classifyId);
return this.getSqlSession().selectOne(this.getStatement("isHaveThisClassify"), paramMap);
}
@Override
public ClassifyVO getClassify(Long classifyId) {
return this.getSqlSession().selectOne(this.getStatement("getClassify"), classifyId);
}
@Override
public ClassifyDTO getById(Long classifyId) {
return this.getSqlSession().selectOne(this.getStatement("getById"), classifyId);
}
@Override
public void updateSpecId(Long id, Long productSpecId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("id", id);
paramMap.put("productSpecId", productSpecId);
this.getSqlSession().update(this.getStatement("updateSpecId"), paramMap);
}
@Override
public void deleteClassify(Long classifyId, Long partyId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyId", classifyId);
paramMap.put("partyId", partyId);
this.getSqlSession().update(this.getStatement("deleteClassify"), paramMap);
}
@Override
public Integer getClassifyCount(Long bookGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getClassifyCount"), bookGroupId);
}
@Override
public List<ListClassifyVO> listAllClassifyByRank(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("listAllClassifyByRank"), bookGroupId);
}
@Override
public List<ListClassifyVO> listAllClassifyByUser(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("listAllClassifyByUser"), bookGroupId);
}
@Override
public void updateClassifyRank(BookGroupClassify bookGroupClassify) {
this.getSqlSession().update(this.getStatement("updateClassifyRank"), bookGroupClassify);
}
@Override
public List<ClassifyNameVO> listClassifyByRank(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("listClassifyByRank"), bookGroupId);
}
@Override
public List<ClassifyNameVO> listClassifyByUser(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("listClassifyByUser"), bookGroupId);
}
@Override
public Integer getGroupCount(Long bookGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getGroupCount"), bookGroupId);
}
@Override
public Integer getUserNumberCount(Long bookGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getUserNumberCount"), bookGroupId);
}
@Override
public GroupNameAndMaxSeqDTO getGroupNameAndMaxSeq(Long classifyId) {
return this.getSqlSession().selectOne(this.getStatement("getGroupNameAndMaxSeq"), classifyId);
}
@Override
public GroupClassifyQrcodeDTO getClassifyQrcodeInfo(String weixinGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getClassifyQrcodeInfo"), weixinGroupId);
}
@Override
public List<ListClassify4WechatVO> listClassify4Wechat(Long bookGroupId, Integer rankType) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("bookGroupId", bookGroupId);
paramMap.put("rankType", rankType);
return this.getSqlSession().selectList(this.getStatement("listClassify4Wechat"), paramMap);
}
@Override
public GroupQrcode4ClassifyVO getClassifyQrcode(Long classifyId, Integer changeNumber) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyId", classifyId);
paramMap.put("changeNumber", changeNumber);
return this.getSqlSession().selectOne(this.getStatement("getClassifyQrcode"), paramMap);
}
@Override
public Map<Long, BookGroupStatisticDTO> getBookGroupStatistic(List<Long> bookGroupIds) {
return this.getSqlSession().selectMap(this.getStatement("getBookGroupStatistic"), bookGroupIds, "bookGroupId");
}
@Override
public List<BookGroupQrcodeStatisticVO> listBookGroupQrcodeStatistic(List<Long> classifyIds, Long bookGroupId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyIds", classifyIds);
paramMap.put("bookGroupId", bookGroupId);
return this.getSqlSession().selectList(this.getStatement("listBookGroupQrcodeStatistic"), paramMap);
}
@Override
public StatisticVO getStatistic4Adviser(Long adviserId) {
return this.getSqlSession().selectOne(this.getStatement("getStatistic4Adviser"), adviserId);
}
@Override
public Map<String, GroupQrcodeBaseDTO> listGroupQrcodeBaseInfo(List<String> weixinGroupIds) {
return this.getSqlSession().selectMap(this.getStatement("listGroupQrcodeBaseInfo"), weixinGroupIds, "weixinGroupId");
}
@Override
public ProAssocGroupAndUserNumberDTO getProAssocGroupAndUserNumber(Long productId) {
return this.getSqlSession().selectOne(this.getStatement("getProAssocGroupAndUserNumber"), productId);
}
@Override
public Integer getMaxRank(Long bookGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getMaxRank"), bookGroupId);
}
@Override
public ClassifyDTO getBaseInfoBySpecId(Long productSpecId) {
return this.getSqlSession().selectOne(this.getStatement("getBaseInfoBySpecId"), productSpecId);
}
}
...@@ -2,9 +2,12 @@ package com.pcloud.book.group.dao.impl; ...@@ -2,9 +2,12 @@ package com.pcloud.book.group.dao.impl;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.pcloud.book.group.dao.BookGroupDao; import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup; import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -59,6 +62,19 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou ...@@ -59,6 +62,19 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
return super.getSqlSession().update(getStatement("recoverByBookId"), paramMap); return super.getSqlSession().update(getStatement("recoverByBookId"), paramMap);
} }
/**
* 获取编辑社群书数量
*/
@Override
public Integer getBookGroupCount(Long adviserId) {
return super.getSqlSession().selectOne(getStatement("getBookGroupCount"), adviserId);
}
@Override
public QrcodeNameAndProIdDTO getQrcodeNameAndProId(Long bookGroupId) {
return super.getSqlSession().selectOne(getStatement("getQrcodeNameAndProId"), bookGroupId);
}
@Override @Override
public Integer getRankType(Long bookGroupId) { public Integer getRankType(Long bookGroupId) {
return super.getSqlSession().selectOne(getStatement("getRankType"), bookGroupId); return super.getSqlSession().selectOne(getStatement("getRankType"), bookGroupId);
...@@ -71,4 +87,9 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou ...@@ -71,4 +87,9 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
paramMap.put("rankType", rankType); paramMap.put("rankType", rankType);
super.getSqlSession().update(getStatement("updateRankType"), paramMap); super.getSqlSession().update(getStatement("updateRankType"), paramMap);
} }
@Override
public String getSpareQr(Long bookGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getSpareQr"), bookGroupId);
}
} }
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.BookQrcodeUserDao;
import com.pcloud.book.group.entity.BookQrcodeUser;
import com.pcloud.book.group.vo.GroupQrcode4ClassifyVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @author lily
* @date 2019/4/30 11:18
*/
@Component("bookQrcodeUserDao")
public class BookQrcodeUserDaoImpl extends BaseDaoImpl<BookQrcodeUser> implements BookQrcodeUserDao {
@Override
public GroupQrcode4ClassifyVO getUserQrcode(Long classifyId, Long wechatUserId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyId", classifyId);
paramMap.put("wechatUserId", wechatUserId);
return this.getSqlSession().selectOne(this.getStatement("getUserQrcode"), paramMap);
}
}
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 16:38
*/
@Component("groupQrcodeDao")
public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements GroupQrcodeDao {
@Override
public void deleteByClassifyId(Long classifyId) {
this.getSqlSession().update(this.getStatement("deleteByClassifyId"), classifyId);
}
@Override
public Map<Long, GroupAndUserNumberDTO> listGroupAndUserNumber(List<Long> classifyIds) {
return this.getSqlSession().selectMap(this.getStatement("listGroupAndUserNumber"), classifyIds, "classifyId");
}
@Override
public void modifyNameById(String wechatGroupName, Long id, Long updateUser) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", id);
paramMap.put("wechatGroupName", wechatGroupName);
paramMap.put("updateUser", updateUser);
this.getSqlSession().update(this.getStatement("modifyNameById"), paramMap);
}
@Override
public void updateQrUrl(UpdateQrDTO updateQrDTO) {
this.getSqlSession().update(this.getStatement("updateQrUrl"), updateQrDTO);
}
@Override
public List<ChangeGroupNameDTO> getWechatGroupInfo(List<Long> ids) {
return this.getSqlSession().selectList(this.getStatement("getWechatGroupInfo"), ids);
}
@Override
public void syncWeixinGroupId(Long weixinQrcodeId, String weixinGroupId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("weixinQrcodeId", weixinQrcodeId);
paramMap.put("weixinGroupId", weixinGroupId);
this.getSqlSession().update(this.getStatement("syncWeixinGroupId"), paramMap);
}
@Override
public void updateUserNumber(String wechatGroupId, Integer memberCount) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("memberCount", memberCount);
paramMap.put("weixinGroupId", wechatGroupId);
this.getSqlSession().update(this.getStatement("updateUserNumber"), paramMap);
}
@Override
public GroupQrcodeDTO getGroupQrcodeInfo(String weixinGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getGroupQrcodeInfo"), weixinGroupId);
}
@Override
public void updateUseState(Long id, Integer useState) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", id);
paramMap.put("useState", useState);
this.getSqlSession().update(this.getStatement("updateUseState"), paramMap);
}
@Override
public void changeQrcodeState(Long id, Integer qrcodeState) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", id);
paramMap.put("qrcodeState", qrcodeState);
this.getSqlSession().update(this.getStatement("changeQrcodeState"), paramMap);
}
@Override
public Map<Long, GroupQrcodeInfoDTO> listQrcodeInfoByIds(List<Long> groupQrcodeIds) {
return this.getSqlSession().selectMap(this.getStatement("listQrcodeInfoByIds"), groupQrcodeIds, "id");
}
@Override
public GroupQrcodeBaseInfoVO getBaseById(Long groupQrcodeId) {
return this.getSqlSession().selectOne(this.getStatement("getBaseById"), groupQrcodeId);
}
@Override
public ChangeGroupNameDTO getUpdateGroupNameParam(Long id) {
return this.getSqlSession().selectOne(this.getStatement("getUpdateGroupNameParam"), id);
}
}
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.WeixinQrcodeDao;
import com.pcloud.book.group.dto.SyncWeixinGroupIdRequestDTO;
import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.dto.WeixinQrcodeCountDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.entity.WeixinQrcode;
import com.pcloud.book.group.vo.QrStatisticsVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.DateUtils;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author lily
* @date 2019/4/17 16:22
*/
@Component("WeixinQrcodeDao")
public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements WeixinQrcodeDao {
@Override
public WeixinQrcodeDTO getOneWechatGroup() {
return this.getSqlSession().selectOne(this.getStatement("getOneWechatGroup"));
}
@Override
public Integer setIsUseById(Long id) {
return this.getSqlSession().update(this.getStatement("setIsUseById"), id);
}
@Override
public QrStatisticsVO getQrStatistics() {
return this.getSqlSession().selectOne(this.getStatement("getQrStatistics"));
}
@Override
public void updateStatusToError() {
this.getSqlSession().update(this.getStatement("updateStatusToError"));
}
@Override
public List<UpdateQrDTO> getInitialQr(int currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("currentPage", currentPage);
paramMap.put("numPerPage", numPerPage);
return this.getSqlSession().selectList(this.getStatement("getInitialQr"), paramMap);
}
@Override
public void setOnUpdate(List<Long> qrIds) {
this.getSqlSession().update(this.getStatement("setOnUpdate"), qrIds);
}
@Override
public void updateQrUrl(UpdateQrDTO updateQrDTO) {
this.getSqlSession().update(this.getStatement("updateQrUrl"), updateQrDTO);
}
@Override
public Integer getQrOnHandleCount() {
return this.getSqlSession().selectOne(this.getStatement("getQrOnHandleCount"));
}
@Override
public List<UpdateQrDTO> getQrOnHandle(Integer currentPage, Integer numPerPage, List<Long> ids) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("currentPage", currentPage);
paramMap.put("numPerPage", numPerPage);
paramMap.put("ids", ids);
return this.getSqlSession().selectList(this.getStatement("getQrOnHandle"), paramMap);
}
@Override
public void updateWeixinGroupId(Long weixinQrcodeId, String weixinGroupId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("weixinQrcodeId", weixinQrcodeId);
paramMap.put("weixinGroupId", weixinGroupId);
this.getSqlSession().update(this.getStatement("updateWeixinGroupId"), paramMap);
}
@Override
public List<SyncWeixinGroupIdRequestDTO> listNoIdQrcode(List<Long> ids) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("ids", ids);
return this.getSqlSession().selectList(this.getStatement("listNoIdQrcode"), paramMap);
}
@Override
public Map<Long, WeixinQrcodeCountDTO> listWeixinQrcodeCountByRobot(List<Long> robotIds) {
return this.getSqlSession().selectMap(this.getStatement("listWeixinQrcodeCountByRobot"), robotIds, "robotId");
}
@Override
public void updateUseState(Long id, Integer useState) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("useState", useState);
paramMap.put("id", id);
this.getSqlSession().update(this.getStatement("updateUseState"), paramMap);
}
@Override
public Integer getQrcodeCount() {
return this.getSqlSession().selectOne(this.getStatement("getQrcodeCount"));
}
@Override
public Boolean checkExist(String weixinGroupId) {
return this.getSqlSession().selectOne(this.getStatement("checkExist"), weixinGroupId);
}
@Override
public void updateState(Long weixinQrcodeId, Integer updateState) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("updateState", updateState);
paramMap.put("weixinQrcodeId", weixinQrcodeId);
this.getSqlSession().update(this.getStatement("updateState"), paramMap);
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AdGroupQrcodeDTO implements Serializable {
private static final long serialVersionUID = 3234046973249447114L;
/**
* 群二维码标识
*/
private Long groupQrcodeId;
/**
* 分类标识
*/
private Long classifyId;
/**
* 微信群名称
*/
private String groupQrcodeName;
/**
* 书刊ID
*/
private Long bookId;
/**
* 书刊名称
*/
private String bookName;
/**
* ISBN
*/
private String isbn;
/**
* 分类名称
*/
private String classify;
/**
* 运营ID
*/
private Long channelId;
/**
* 编辑ID
*/
private Long adviserId;
/**
* 编辑名称
*/
private String adviserName;
/**
* 出版社ID
*/
private Long agentId;
/**
* 出版社名称
*/
private String agentName;
/**
* 曝光量
*/
private Long exposureNum;
/**
* 点击量
*/
private Long clickNum;
/**
* 广告位数量
*/
private Long advertisingSpaceNum;
/**
* 点击率
*/
private BigDecimal clickRate;
/**
* 累计收益
*/
private BigDecimal totalIncome;
/**
* 是否开启广告位权限
*/
private Boolean isOpen;
/**
* 投放时间
*/
private Date distributionTime;
public Long getGroupQrcodeId() {
return groupQrcodeId;
}
public void setGroupQrcodeId(Long groupQrcodeId) {
this.groupQrcodeId = groupQrcodeId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public String getGroupQrcodeName() {
return groupQrcodeName;
}
public void setGroupQrcodeName(String groupQrcodeName) {
this.groupQrcodeName = groupQrcodeName;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public String getAdviserName() {
return adviserName;
}
public void setAdviserName(String adviserName) {
this.adviserName = adviserName;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public String getAgentName() {
return agentName;
}
public void setAgentName(String agentName) {
this.agentName = agentName;
}
public Long getExposureNum() {
return exposureNum;
}
public void setExposureNum(Long exposureNum) {
this.exposureNum = exposureNum;
}
public Long getClickNum() {
return clickNum;
}
public void setClickNum(Long clickNum) {
this.clickNum = clickNum;
}
public Long getAdvertisingSpaceNum() {
return advertisingSpaceNum;
}
public void setAdvertisingSpaceNum(Long advertisingSpaceNum) {
this.advertisingSpaceNum = advertisingSpaceNum;
}
public BigDecimal getClickRate() {
return clickRate;
}
public void setClickRate(BigDecimal clickRate) {
this.clickRate = clickRate;
}
public BigDecimal getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(BigDecimal totalIncome) {
this.totalIncome = totalIncome;
}
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date getDistributionTime() {
return distributionTime;
}
public void setDistributionTime(Date distributionTime) {
this.distributionTime = distributionTime;
}
@Override
public String toString() {
return "AdGroupQrcodeDTO{" +
"groupQrcodeId=" + groupQrcodeId +
", classifyId=" + classifyId +
", groupQrcodeName='" + groupQrcodeName + '\'' +
", bookId=" + bookId +
", bookName='" + bookName + '\'' +
", isbn='" + isbn + '\'' +
", classify='" + classify + '\'' +
", channelId=" + channelId +
", adviserId=" + adviserId +
", adviserName='" + adviserName + '\'' +
", agentId=" + agentId +
", agentName='" + agentName + '\'' +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", advertisingSpaceNum=" + advertisingSpaceNum +
", clickRate=" + clickRate +
", totalIncome=" + totalIncome +
", isOpen=" + isOpen +
", distributionTime=" + distributionTime +
'}';
}
}
...@@ -2,6 +2,7 @@ package com.pcloud.book.group.dto; ...@@ -2,6 +2,7 @@ package com.pcloud.book.group.dto;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.common.dto.BaseDto; import com.pcloud.common.dto.BaseDto;
/** /**
...@@ -110,6 +111,11 @@ public class BookGroupDTO extends BaseDto { ...@@ -110,6 +111,11 @@ public class BookGroupDTO extends BaseDto {
*/ */
private Boolean isDelete; private Boolean isDelete;
/**
* 书刊信息
*/
private BookDto bookInfo;
public Long getId() { public Long getId() {
return id; return id;
} }
...@@ -264,6 +270,14 @@ public class BookGroupDTO extends BaseDto { ...@@ -264,6 +270,14 @@ public class BookGroupDTO extends BaseDto {
this.purLabelName = purLabelName; this.purLabelName = purLabelName;
} }
public BookDto getBookInfo() {
return bookInfo;
}
public void setBookInfo(BookDto bookInfo) {
this.bookInfo = bookInfo;
}
@Override @Override
public String toString() { public String toString() {
return "BookGroupDTO{" + return "BookGroupDTO{" +
...@@ -286,6 +300,7 @@ public class BookGroupDTO extends BaseDto { ...@@ -286,6 +300,7 @@ public class BookGroupDTO extends BaseDto {
", createTime=" + createTime + ", createTime=" + createTime +
", updateTime=" + updateTime + ", updateTime=" + updateTime +
", isDelete=" + isDelete + ", isDelete=" + isDelete +
", bookInfo=" + bookInfo +
"} " + super.toString(); "} " + super.toString();
} }
} }
\ No newline at end of file
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/30 17:34
*/
public class BookGroupStatisticDTO implements Serializable {
/**
* 社群码标识
*/
private Long bookGroupId;
/**
* 分类数量
*/
private Integer classifyCount;
/**
* 群数量
*/
private Integer groupNumber;
/**
* 用户数量
*/
private Integer userNumber;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Integer getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Integer classifyCount) {
this.classifyCount = classifyCount;
}
public Integer getGroupNumber() {
return groupNumber;
}
public void setGroupNumber(Integer groupNumber) {
this.groupNumber = groupNumber;
}
public Integer getUserNumber() {
return userNumber;
}
public void setUserNumber(Integer userNumber) {
this.userNumber = userNumber;
}
@Override
public String toString() {
return "BookGroupStatisticDTO{" +
"bookGroupId=" + bookGroupId +
", classifyCount=" + classifyCount +
", groupNumber=" + groupNumber +
", userNumber=" + userNumber +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/2 15:33
*/
public class ChangeGroupNameDTO implements Serializable {
/**
* 群二维码标识
*/
private Long id;
/**
* 群名称
*/
private String wxGroupName;
/**
* 群微信标识
*/
private String wxGroupId;
/**
* 群二维码
*/
private String url;
/**
* 请求地址
*/
private String requestUrl;
/**
* 机器人微信标识
*/
private String robotWxId;
public String getRequestUrl() {
return requestUrl;
}
public void setRequestUrl(String requestUrl) {
this.requestUrl = requestUrl;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getWxGroupName() {
return wxGroupName;
}
public void setWxGroupName(String wxGroupName) {
this.wxGroupName = wxGroupName;
}
public String getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(String wxGroupId) {
this.wxGroupId = wxGroupId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getRobotWxId() {
return robotWxId;
}
public void setRobotWxId(String robotWxId) {
this.robotWxId = robotWxId;
}
@Override
public String toString() {
return "ChangeGroupNameDTO{" +
"id=" + id +
", wxGroupName='" + wxGroupName + '\'' +
", wxGroupId='" + wxGroupId + '\'' +
", url='" + url + '\'' +
", requestUrl='" + requestUrl + '\'' +
", robotWxId='" + robotWxId + '\'' +
'}';
}
}
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModel;
/**
* @author lily
* @date 2019/4/17 14:17
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ClassifyDTO implements Serializable {
/**
* 群标签标识
*/
private Long id;
/**
* 图书标识
*/
private Long bookId;
/**
* 运营标识
*/
private Long channelId;
/**
* 社群二维码标识
*/
private Long bookGroupId;
/**
* 分类
*/
private String classify;
/**
* 分类介绍
*/
private String classifyIntroduce;
/**
* 价格
*/
private BigDecimal price;
/**
* 商品标识
*/
private Long productId;
/**
* 规格标识
*/
private Long productSpecId;
/**
* 换群人数
*/
private Integer changeNumber;
/**
* 排序
*/
private Integer rank;
public Integer getRank() {
return rank;
}
public void setRank(Integer rank) {
this.rank = rank;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
public String getClassifyIntroduce() {
return classifyIntroduce;
}
public void setClassifyIntroduce(String classifyIntroduce) {
this.classifyIntroduce = classifyIntroduce;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public Integer getChangeNumber() {
return changeNumber;
}
public void setChangeNumber(Integer changeNumber) {
this.changeNumber = changeNumber;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public Long getProductSpecId() {
return productSpecId;
}
public void setProductSpecId(Long productSpecId) {
this.productSpecId = productSpecId;
}
@Override
public String toString() {
return "ClassifyDTO{" +
"id=" + id +
", bookId=" + bookId +
", channelId=" + channelId +
", bookGroupId=" + bookGroupId +
", classify='" + classify + '\'' +
", classifyIntroduce='" + classifyIntroduce + '\'' +
", price=" + price +
", productId=" + productId +
", productSpecId=" + productSpecId +
", changeNumber=" + changeNumber +
", rank=" + rank +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @author lily
* @date 2019/3/4 15:58
*/
@ApiModel
public class GroupAndUserNumberDTO implements Serializable {
@ApiModelProperty("分类标识")
private Long classifyId;
@ApiModelProperty("微信群数量")
private Integer groupCount;
@ApiModelProperty("进群人数")
private Integer userCount;
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Integer getGroupCount() {
return groupCount;
}
public void setGroupCount(Integer groupCount) {
this.groupCount = groupCount;
}
public Integer getUserCount() {
return userCount;
}
public void setUserCount(Integer userCount) {
this.userCount = userCount;
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/28 17:22
*/
public class GroupNameAndMaxSeqDTO implements Serializable {
/**
* 社群码名称
*/
private String groupQrcodeName;
/**
* 分类标识
*/
private Long classifyId;
/**
* 最大序号
*/
private Integer maxSeq;
/**
* 分类
*/
private String classify;
/**
* 创建人
*/
private Long createUser;
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Integer getMaxSeq() {
return maxSeq;
}
public void setMaxSeq(Integer maxSeq) {
this.maxSeq = maxSeq;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
public String getGroupQrcodeName() {
return groupQrcodeName;
}
public void setGroupQrcodeName(String groupQrcodeName) {
this.groupQrcodeName = groupQrcodeName;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
@Override
public String toString() {
return "GroupNameAndMaxSeqDTO{" +
"groupQrcodeName='" + groupQrcodeName + '\'' +
", classifyId=" + classifyId +
", maxSeq=" + maxSeq +
", classify='" + classify + '\'' +
", createUser=" + createUser +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/28 15:02
*/
public class GroupQrcodeDTO implements Serializable {
/**
* 分类二维码标识
*/
private Long id;
/**
* 分类标识
*/
private Long classifyId;
/**
* 微信二维码标识
*/
private Long weixinQrcodeId;
/**
* 微信群标识
*/
private Long weixinGroupId;
/**
* 限制人数
*/
private Integer changeNumber;
/**
* 二维码状态
*/
private Integer qrcodeState;
/**
* 使用状态
*/
private Integer useState;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getWeixinQrcodeId() {
return weixinQrcodeId;
}
public void setWeixinQrcodeId(Long weixinQrcodeId) {
this.weixinQrcodeId = weixinQrcodeId;
}
public Integer getChangeNumber() {
return changeNumber;
}
public void setChangeNumber(Integer changeNumber) {
this.changeNumber = changeNumber;
}
public Integer getQrcodeState() {
return qrcodeState;
}
public void setQrcodeState(Integer qrcodeState) {
this.qrcodeState = qrcodeState;
}
public Integer getUseState() {
return useState;
}
public void setUseState(Integer useState) {
this.useState = useState;
}
public Long getWeixinGroupId() {
return weixinGroupId;
}
public void setWeixinGroupId(Long weixinGroupId) {
this.weixinGroupId = weixinGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
@Override
public String toString() {
return "GroupQrcodeDTO{" +
"id=" + id +
", classifyId=" + classifyId +
", weixinQrcodeId=" + weixinQrcodeId +
", weixinGroupId=" + weixinGroupId +
", changeNumber=" + changeNumber +
", qrcodeState=" + qrcodeState +
", useState=" + useState +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/29 14:41
*/
public class GroupQrcodeInfoDTO implements Serializable {
private Long id;
private Integer groupSeq;
private Integer userNumber;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getGroupSeq() {
return groupSeq;
}
public void setGroupSeq(Integer groupSeq) {
this.groupSeq = groupSeq;
}
public Integer getUserNumber() {
return userNumber;
}
public void setUserNumber(Integer userNumber) {
this.userNumber = userNumber;
}
@Override
public String toString() {
return "GroupQrcodeInfoDTO{" +
"id=" + id +
", groupSeq=" + groupSeq +
", userNumber=" + userNumber +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/5/8 21:48
*/
public class PushAddUserMessageDTO implements Serializable {
private String weixinGroupId;
private Long time;
public String getWeixinGroupId() {
return weixinGroupId;
}
public void setWeixinGroupId(String weixinGroupId) {
this.weixinGroupId = weixinGroupId;
}
public Long getTime() {
return time;
}
public void setTime(Long time) {
this.time = time;
}
@Override
public String toString() {
return "PushAddUserMessageDTO{" +
"weixinGroupId='" + weixinGroupId + '\'' +
", time=" + time +
'}';
}
}
package com.pcloud.book.group.dto;
/**
* @author lily
* @date 2019/4/18 9:54
*/
public class QrcodeNameAndProIdDTO {
private Long bookGroupId;
/**
* 群名称
*/
private String groupQrcodeName;
/**
* 商品标识
*/
private Long productId;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public String getGroupQrcodeName() {
return groupQrcodeName;
}
public void setGroupQrcodeName(String groupQrcodeName) {
this.groupQrcodeName = groupQrcodeName;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
@Override
public String toString() {
return "QrcodeNameAndProIdDTO{" +
"bookGroupId=" + bookGroupId +
", groupQrcodeName='" + groupQrcodeName + '\'' +
", productId=" + productId +
'}';
}
}
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author lily
* @date 2019/4/15 11:40
*/
public class SyncWeixinGroupIdRequestDTO implements Serializable {
/**
* 群二维码标识
*/
private Long id;
/**
* 群二维码
*/
private String url;
/**
* 机器人微信号
*/
private String robotWxId;
/**
* 请求地址
*/
private String requestUrl;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getRequestUrl() {
return requestUrl;
}
public void setRequestUrl(String requestUrl) {
this.requestUrl = requestUrl;
}
public String getRobotWxId() {
return robotWxId;
}
public void setRobotWxId(String robotWxId) {
this.robotWxId = robotWxId;
}
@Override
public String toString() {
return "SyncWeixinGroupIdRequestDTO{" +
"id=" + id +
", url='" + url + '\'' +
", robotWxId='" + robotWxId + '\'' +
", requestUrl='" + requestUrl + '\'' +
'}';
}
}
package com.pcloud.book.group.entity;
import com.pcloud.common.entity.BaseEntity;
import java.math.BigDecimal;
/**
* @author lily
* @date 2019/4/19 11:32
*/
public class BookClassifyBuyRecord extends BaseEntity {
private Long bookId;
private Long channelId;
private Long bookQrcodeId;
private Long productId;
private Long wechatUserId;
private Long productSpecId;
private Long classifyId;
private Long id;
private BigDecimal price;
private String orderNumber;
public Long getBookQrcodeId() {
return bookQrcodeId;
}
public void setBookQrcodeId(Long bookQrcodeId) {
this.bookQrcodeId = bookQrcodeId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public Long getWechatUserId() {
return wechatUserId;
}
public void setWechatUserId(Long wechatUserId) {
this.wechatUserId = wechatUserId;
}
public Long getProductSpecId() {
return productSpecId;
}
public void setProductSpecId(Long productSpecId) {
this.productSpecId = productSpecId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
@Override
public String toString() {
return "BookClassifyBuyRecord{" +
"bookId=" + bookId +
", channelId=" + channelId +
", bookQrcodeId=" + bookQrcodeId +
", productId=" + productId +
", wechatUserId=" + wechatUserId +
", productSpecId=" + productSpecId +
", classifyId=" + classifyId +
", id=" + id +
", price=" + price +
", orderNumber='" + orderNumber + '\'' +
'}';
}
}
package com.pcloud.book.group.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/3/2 14:12
*/
public class BookGroupClassify extends BaseEntity {
private static final long serialVersionUID = 6793085343129702487L;
/**
* 群标签标识
*/
private Long id;
/**
* 图书标识
*/
private Long bookId;
/**
* 运营标识
*/
private Long channelId;
/**
* 社群二维码标识
*/
private Long bookGroupId;
/**
* 分类
*/
private String classify;
/**
* 分类介绍
*/
private String classifyIntroduce;
/**
* 价格
*/
private BigDecimal price;
/**
* 商品标识
*/
private Long productId;
/**
* 规格标识
*/
private Long productSpecId;
/**
* 换群人数
*/
private Integer changeNumber;
/**
* 排序
*/
private Integer rank;
/**
* 创建人
*/
private Long createUser;
/**
* 修改用户
*/
private Long updateUser;
private Integer isDelete;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date updateTime;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
public String getClassifyIntroduce() {
return classifyIntroduce;
}
public void setClassifyIntroduce(String classifyIntroduce) {
this.classifyIntroduce = classifyIntroduce;
}
public Integer getRank() {
return rank;
}
public void setRank(Integer rank) {
this.rank = rank;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public Long getProductSpecId() {
return productSpecId;
}
public void setProductSpecId(Long productSpecId) {
this.productSpecId = productSpecId;
}
public Integer getChangeNumber() {
return changeNumber;
}
public void setChangeNumber(Integer changeNumber) {
this.changeNumber = changeNumber;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Integer getIsDelete() {
return isDelete;
}
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "BookGroupClassify{" +
"id=" + id +
", bookId=" + bookId +
", channelId=" + channelId +
", bookGroupId=" + bookGroupId +
", classify='" + classify + '\'' +
", classifyIntroduce='" + classifyIntroduce + '\'' +
", price=" + price +
", productId=" + productId +
", productSpecId=" + productSpecId +
", changeNumber=" + changeNumber +
", rank=" + rank +
", createUser=" + createUser +
", updateUser=" + updateUser +
", isDelete=" + isDelete +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
\ No newline at end of file
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