diff --git a/ad-platform-common/ad-platform-common-core/pom.xml b/ad-platform-common/ad-platform-common-core/pom.xml index 55c8f9ab..08732857 100644 --- a/ad-platform-common/ad-platform-common-core/pom.xml +++ b/ad-platform-common/ad-platform-common-core/pom.xml @@ -113,6 +113,11 @@ java-jwt + + com.vdurmont + emoji-java + + diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/DefaultNumberConstants.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/DefaultNumberConstants.java index 0e585aa1..00fcc027 100644 --- a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/DefaultNumberConstants.java +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/DefaultNumberConstants.java @@ -11,6 +11,11 @@ public class DefaultNumberConstants { private DefaultNumberConstants() { } + + /** + * -3 + */ + public static final int MINUS_THREE_NUMBER = -3; /** * -2 */ @@ -86,7 +91,6 @@ public class DefaultNumberConstants { public static final int FOURTEEN_NUMBER = 14; - /** * 15 */ @@ -120,11 +124,19 @@ public class DefaultNumberConstants { * 100 */ public static final double ONE_HUNDRED = 100; + /** * 200 */ public static final int TWO_HUNDRED = 200; + + /** + * 201 + */ + public static final int TWO_HUNDRED_ONE = 201; + + /** * 1005 */ @@ -145,24 +157,24 @@ public class DefaultNumberConstants { /** * 十万 */ - public static final int ONE_HUNDRED_THOUSAND = 100000; + public static final int ONE_HUNDRED_THOUSAND = 100000; /** * 999999 */ - public static final int LESS_THAN_ONE_MILLION = 999999; + public static final int LESS_THAN_ONE_MILLION = 999999; /** * 一百万 */ - public static final int ONE_MILLION = 1000000; + public static final int ONE_MILLION = 1000000; /** * 9999999 */ - public static final int TEN_MILLION = 9999999; + public static final int TEN_MILLION = 9999999; /** * @ diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/WeChatRequestConstants.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/WeChatRequestConstants.java index 8b20c9c0..7c119698 100644 --- a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/WeChatRequestConstants.java +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/constant/WeChatRequestConstants.java @@ -66,7 +66,7 @@ public interface WeChatRequestConstants { /** * 在线状态检测 */ - String WE_CHAT_STATUS = " /wechat/v1/wecatstatus"; + String WE_CHAT_STATUS = "/wechat/v1/wecatstatus"; diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/CommonResponse.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/CommonResponse.java index 74687ead..b959e42f 100644 --- a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/CommonResponse.java +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/CommonResponse.java @@ -1,6 +1,5 @@ package com.baiye.http; -import cn.hutool.http.HttpStatus; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import lombok.Getter; diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/WeChatParseResponse.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/WeChatParseResponse.java new file mode 100644 index 00000000..75ed2300 --- /dev/null +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/WeChatParseResponse.java @@ -0,0 +1,19 @@ +package com.baiye.http; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Enzo + * @date : 2022/6/27 + */ +@Data +public class WeChatParseResponse implements Serializable { + + private static final long serialVersionUID = -4823173492909135229L; + + private Integer status; + + private String desc; +} diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterAes.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterAes.java index e00a9fff..f101e35f 100644 --- a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterAes.java +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterAes.java @@ -10,7 +10,7 @@ import javax.persistence.Converter; @Converter public class JpaConverterAes implements AttributeConverter { - private final String secret = "ad-platform"; + private final String secret = "by-we-chat"; @Override public String convertToDatabaseColumn(Object obj) { diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterUnicode.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterUnicode.java new file mode 100644 index 00000000..dbcc2e75 --- /dev/null +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/JpaConverterUnicode.java @@ -0,0 +1,25 @@ +package com.baiye.util; + +import cn.hutool.extra.emoji.EmojiUtil; + +import javax.persistence.AttributeConverter; +import javax.persistence.Converter; + +/** + * @author Enzo + * @date : 2022-7-1 + */ +@Converter +public class JpaConverterUnicode implements AttributeConverter { + + + @Override + public String convertToDatabaseColumn(Object obj) { + return EmojiUtil.toAlias(obj.toString()); + } + + @Override + public Object convertToEntityAttribute(String s) { + return EmojiUtil.toUnicode(s); + } +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/AddWeChatFriendRecordDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/AddWeChatFriendRecordDTO.java new file mode 100644 index 00000000..fc1deaa1 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/AddWeChatFriendRecordDTO.java @@ -0,0 +1,51 @@ +package com.baiye.model.dto; + +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.util.JpaConverterAes; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author Enzo + * @date : 2022/7/1 + */ + +@Getter +@Setter +@ToString +@NoArgsConstructor +public class AddWeChatFriendRecordDTO implements Serializable { + + + private static final long serialVersionUID = 7818011288635567258L; + + @ApiModelProperty("添加类型 1企业微信 2个人微信") + private Integer type; + + @ApiModelProperty("登录用户id") + private Long userId; + + @ApiModelProperty("线索id") + private Long clueId; + + @ApiModelProperty("添加状态 0已添加 1已通过") + private Integer status; + + @ApiModelProperty("机器人微信") + private String robotWeChat; + + @ApiModelProperty("用户微信") + private String userWechat; + + @ApiModelProperty("添加时间") + private Date addFriendTime; + + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueDto.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueDto.java index c10f805e..6b91c8fb 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueDto.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/ClueDto.java @@ -108,4 +108,14 @@ public class ClueDto implements Serializable { @ApiModelProperty(value = "线索最新通话时间") private Date newestCallTime; + @ApiModelProperty(value = "添加微信类型") + private Integer addWeChatType; + + @ApiModelProperty(value = "添加微信时间") + private Date addWeChatTime; + + @ApiModelProperty(value = "添加微信状态 -2已添加未通过 -1未添加 0已添加 1已通过 ") + private Integer addWeChatStatus; + + } diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/TemplateUserDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/TemplateUserDTO.java new file mode 100644 index 00000000..e1aa8201 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/TemplateUserDTO.java @@ -0,0 +1,17 @@ +package com.baiye.model.dto; + +import lombok.Data; + +import java.util.Date; + +/** + * @author Enzo + * @date : 2022/7/4 + */ +@Data +public class TemplateUserDTO { + private Date endTime; + private Integer status; + private Boolean weChatFlag; + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/UserDto.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/UserDto.java index 9d2976c6..e04cc6eb 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/dto/UserDto.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/UserDto.java @@ -81,5 +81,7 @@ public class UserDto extends BaseDTO implements Serializable { private Boolean isReview; + private Integer onlineStatus; + private Boolean addWeChatFlag; } diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/WeChatQrCodeDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/WeChatQrCodeDTO.java deleted file mode 100644 index c2ff326f..00000000 --- a/ad-platform-pojo/src/main/java/com/baiye/model/dto/WeChatQrCodeDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baiye.model.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author Enzo - * @date : 2022/6/24 - */ -@Data -public class WeChatQrCodeDTO implements Serializable { - private static final long serialVersionUID = 5388401222056549488L; - - private String wechat; - - private String uuid; - -} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatFriendDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatFriendDTO.java new file mode 100644 index 00000000..60460f8f --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatFriendDTO.java @@ -0,0 +1,30 @@ +package com.baiye.model.dto.wechat; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author Enzo + * @date : 2022/6/27 + */ +@Data +public class WeChatFriendDTO { + + @NotNull + @ApiModelProperty(value = "添加类型 0-手机号 1-微信号") + private Integer type; + + @ApiModelProperty(value = "微信号 type为1时传递") + private String tagetWxId; + + @NotBlank + @ApiModelProperty(value = "线索id") + private String clueId; + + @ApiModelProperty(value = "发送内容") + private String sendContent; + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatQrCodeDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatQrCodeDTO.java new file mode 100644 index 00000000..245172c7 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatQrCodeDTO.java @@ -0,0 +1,22 @@ +package com.baiye.model.dto.wechat; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Enzo + * @date : 2022/6/24 + */ +@Data +public class WeChatQrCodeDTO implements Serializable { + private static final long serialVersionUID = 5388401222056549488L; + + @ApiModelProperty(value = "微信id,当传递此参数将登录在最近登录的设备上") + private String wechat; + + @ApiModelProperty(value = "随机id,传递此参数当二维码还没作废的时,返回之前没用的二维码地址") + private String uuid; + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatUserLoginDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatUserLoginDTO.java new file mode 100644 index 00000000..098fd831 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/wechat/WeChatUserLoginDTO.java @@ -0,0 +1,60 @@ +package com.baiye.model.dto.wechat; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Enzo + * @date : 2022/6/28 + */ +@Data +public class WeChatUserLoginDTO implements Serializable { + private static final long serialVersionUID = -3405251435086857475L; + + private String flag; + + private Integer loginType; + + private Boolean newDevice; + + private String qrCodeKey; + + private Boolean newWxLogin; + + private String cusQrUuId; + + private String wxid; + + private String serverid; + + private Boolean second; + + private String token; + + private Integer protoVer; + + private String randomid; + + private String wxdat; + + private String softwareId; + + private Integer sourceType; + + private String qrCodeUrl; + + private String host; + + private String nickname; + + private Integer strategy; + + private String usercode; + + private String account; + + private String smallHeadImgUrl; + + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/enums/ResponseCode.java b/ad-platform-pojo/src/main/java/com/baiye/model/enums/ResponseCode.java index 295c5526..f0d0f376 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/enums/ResponseCode.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/enums/ResponseCode.java @@ -120,6 +120,28 @@ public enum ResponseCode { * 获取二维码失败 */ FAILED_GET_QR_CODE("1028", "获取二维码失败"), + + /** + * + * 获取模板失败 + */ + FAILED_GET_TEMPLATE("1029", "获取模板失败,请先配置发送模板"), + + /** + * + * 发送消息至少配置一条 + */ + TEMPLATE_CHANGE_ERROR("1031", "发送消息至少配置一条!"), + + /** + * 添加好友失败 + */ + FAILED_ADD_FRIEND("1032","添加好友失败!"), + + /** + * 当前账户未登录或不在线 + */ + ACCOUNT_NOT_LOGGED_OR_NOT_ONLINE("1030", "当前账户未登录或不在线"), /** * * 非超级管理员不能修改数据 diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/security/config/SpringSecurityConfig.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/security/config/SpringSecurityConfig.java index b93aeaa3..0b913213 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/security/config/SpringSecurityConfig.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/security/config/SpringSecurityConfig.java @@ -151,7 +151,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers( "/api/report/turnOn").permitAll() .antMatchers( "/api/users/info/findById").permitAll() .antMatchers( "/api/users/info/findIsReview").permitAll() - .antMatchers( "/api/wechat/**").permitAll() + .antMatchers( "/wechat/**").permitAll() // 支付回调 .antMatchers( "/pay/aliPay/pay-notify").permitAll() // 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型 diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/AddWeChatFriendRecord.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/AddWeChatFriendRecord.java new file mode 100644 index 00000000..262ac42e --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/AddWeChatFriendRecord.java @@ -0,0 +1,70 @@ +package com.baiye.modules.system.domain; + +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.model.base.BaseEntity; +import com.baiye.util.JpaConverterAes; +import com.baiye.util.JpaConverterUnicode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author Enzo + * @date : 2022/7/1 + */ +@Getter +@Setter +@Entity +@Table(name = "tb_we_chat_friend_record") +@EntityListeners(AuditingEntityListener.class) +public class AddWeChatFriendRecord extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 3045806596975568412L; + + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ApiModelProperty("添加类型 1企业微信 2个人微信") + @Column(name = "type") + private Integer type; + + @ApiModelProperty("登录用户id") + @Column(name = "user_Id") + private Long userId; + + @ApiModelProperty("线索id") + @Column(name = "clue_id") + private Long clueId; + + @ApiModelProperty("添加状态 0已添加 1已通过") + @Column(name = "status") + private Integer status = DefaultNumberConstants.ZERO_NUMBER; + + @ApiModelProperty("机器人微信") + @Column(name = "robot_we_chat") + @Convert(converter = JpaConverterAes.class) + private String robotWeChat; + + @ApiModelProperty("用户微信") + @Column(name = "user_we_chat") + @Convert(converter = JpaConverterAes.class) + private String userWechat; + + @ApiModelProperty("发送内容") + @Convert(converter = JpaConverterUnicode.class) + @Column(name = "send_content") + private String sendContent; + + @ApiModelProperty("好友通过时间") + @Column(name = "add_friend_time") + private Date addFriendTime; + + +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayCombo.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayCombo.java index 74249f6c..d840aff0 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayCombo.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/PayCombo.java @@ -79,4 +79,8 @@ public class PayCombo implements Serializable { @LastModifiedDate private Date updateTime; + @Column(name = "we_chat_flag") + @ApiModelProperty(value = "微信添加权限") + private Boolean weChatFlag; + } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java index 85572eec..1c8c85dd 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java @@ -121,6 +121,9 @@ public class User extends BaseEntity implements Serializable { @Transient private Long templateId; + @Transient + private String greetMessage; + @Override public boolean equals(Object o) { if (this == o) { diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WeChatUser.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WeChatUser.java index ff5c37a6..1d49e51c 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WeChatUser.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WeChatUser.java @@ -7,6 +7,7 @@ import lombok.Setter; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; +import java.util.Date; /** * @author Enzo @@ -26,4 +27,42 @@ public class WeChatUser extends BaseEntity { @ApiModelProperty(value = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + + @Column(name = "user_id") + @ApiModelProperty(value = "用户id") + private Long userId; + + @Column(name = "login_type") + @ApiModelProperty(value = "登录类型") + private Integer loginType; + + @Column(name = "nickname") + @ApiModelProperty(value = "昵称") + private String nickname; + + @Column(name = "login_date") + @ApiModelProperty(value = "登录时间") + private Date loginDate; + + @Column(name = "small_head_img_url") + @ApiModelProperty(value = "头像") + private String smallHeadImgUrl; + + @Column(name = "wx_id") + @ApiModelProperty(value = "微信号") + private String wxId; + + @Column(name = "token") + @ApiModelProperty(value = "token") + private String token; + + @Column(name = "random_id") + @ApiModelProperty(value = "随机id") + private String randomId; + + + + + + } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WechatSendMessage.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WechatSendMessage.java new file mode 100644 index 00000000..bf9732fe --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/WechatSendMessage.java @@ -0,0 +1,70 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.domain; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.model.base.BaseEntity; +import com.baiye.util.JpaConverterUnicode; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.*; +import java.io.Serializable; +import java.sql.Timestamp; + +/** +* @website https://el-admin.vip +* @description / +* @author Enzo +* @date 2022-07-01 +**/ +@Entity +@Data +@Table(name="tb_wechat_send_message") +public class WechatSendMessage extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -8886964419423069607L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + @ApiModelProperty(value = "id") + private Long id; + + @Column(name = "status") + @ApiModelProperty(value = "状态值") + private Integer status = DefaultNumberConstants.ONE_NUMBER; + + @Column(name = "user_id") + @ApiModelProperty(value = "用户") + private Long userId; + + @Column(name = "great_message") + @ApiModelProperty(value = "发送消息") + @Convert(converter = JpaConverterUnicode.class) + private String greatMessage; + + @Column(name = "is_default") + @ApiModelProperty(value = "是否默认") + private Integer isDefault; + + + public void copy(WechatSendMessage source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/AddWeChatFriendRecordRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/AddWeChatFriendRecordRepository.java new file mode 100644 index 00000000..ced40337 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/AddWeChatFriendRecordRepository.java @@ -0,0 +1,45 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.repository; + +import com.baiye.modules.system.domain.AddWeChatFriendRecord; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.List; + +/** +* @website https://el-admin.vip +* @author Enzo +* @date 2022-07-01 +**/ +public interface AddWeChatFriendRecordRepository extends JpaRepository, JpaSpecificationExecutor { + + /** + * 线索id查找 + * @param clueId + * @return + */ + AddWeChatFriendRecord findByClueId(Long clueId); + + + /** + * 状态查找 + * @param num + * @return + */ + List findByStatus(Integer num); +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayComboUserRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayComboUserRepository.java index 250490a7..39fb50fc 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayComboUserRepository.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/PayComboUserRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; @Repository public interface PayComboUserRepository extends JpaRepository, JpaSpecificationExecutor { @@ -30,4 +31,21 @@ public interface PayComboUserRepository extends JpaRepository findByDay(String day); + + /** + * id查找状态值 + * @param id + * @return + */ + @Query(value = "SELECT " + + " t.end_time," + + " c.`status`," + + " c.we_chat_flag " + + "FROM " + + " tb_pay_combo_user t," + + " tb_pay_combo c " + + " WHERE " + + " t.pay_combo_id = c.combo_id " + + " AND t.user_id = ?1", nativeQuery = true) + List> findTemplateDTOByUserId(Long id); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WeChatRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WeChatUserRepository.java similarity index 78% rename from manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WeChatRepository.java rename to manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WeChatUserRepository.java index 389c78c9..b8f89040 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WeChatRepository.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WeChatUserRepository.java @@ -23,7 +23,15 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2018-11-22 */ -public interface WeChatRepository extends JpaRepository, JpaSpecificationExecutor { +public interface WeChatUserRepository extends JpaRepository, JpaSpecificationExecutor { + + + /** + * id查找微信用户 + * @param userId + * @return + */ + WeChatUser findByUserId(Long userId); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WechatSendMessageRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WechatSendMessageRepository.java new file mode 100644 index 00000000..c0938f94 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/repository/WechatSendMessageRepository.java @@ -0,0 +1,68 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.repository; + +import com.baiye.modules.system.domain.WechatSendMessage; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** +* @website https://el-admin.vip +* @author Enzo +* @date 2022-07-01 +**/ +public interface WechatSendMessageRepository extends JpaRepository, JpaSpecificationExecutor { + + /** + * 用户id查找发送模板 + * @param userId + * @return + */ + @Query(value = "from WechatSendMessage where status = 1 and userId = ?1 order by isDefault desc") + List findByUserId(Long userId); + + + /** + * 默认值查找 + * @param num + * @return + */ + WechatSendMessage findByIsDefault(Integer num); + + /** + * 修改默认值 + * @param changeValue + * @param originalValue + */ + @Modifying + @Query(value = "UPDATE WechatSendMessage m set m.isDefault = ?1 where m.isDefault = ?2") + void updateDefaultByDefault(Integer changeValue,Integer originalValue); + + + + /** + * 修改默认值 + * @param changeValue + * @param id + */ + @Modifying + @Query(value = "UPDATE WechatSendMessage m set m.isDefault = ?1 where m.id = ?2") + void updateDefaultById(Integer changeValue,Long id ); +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/AddWeChatFriendController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/AddWeChatFriendController.java new file mode 100644 index 00000000..420b8fab --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/AddWeChatFriendController.java @@ -0,0 +1,30 @@ +package com.baiye.modules.system.rest; + +import com.baiye.modules.system.service.AddWeChatFriendRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Enzo + * @date : 2022/7/1 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "系统代理商管理") +@RequestMapping("/api/addFriendRecord") +public class AddWeChatFriendController { + private final AddWeChatFriendRecordService addWeChatFriendRecordService; + + @ApiOperation("查找记录") + @GetMapping("/findByClueId") + public ResponseEntity query(@RequestParam("clueId") Long clueId) { + return new ResponseEntity<>(addWeChatFriendRecordService.findByClueId(clueId), HttpStatus.OK); + } +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WeChatCallbackController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WeChatCallbackController.java index 41789431..bfc671f7 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WeChatCallbackController.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WeChatCallbackController.java @@ -1,20 +1,26 @@ package com.baiye.modules.system.rest; +import cn.hutool.json.JSONUtil; import com.baiye.http.WeChatResponse; import com.baiye.modules.system.service.WeChatUserService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpRequest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Enumeration; +import java.util.Map; /** * @author Enzo * @date : 2022/6/24 */ +@Slf4j @RestController @Api(tags = "微信回调") @RequestMapping("/wechat") @@ -25,7 +31,7 @@ public class WeChatCallbackController { /** * 请求三方微信操作回调 - * @param weChatResponse + * * @return */ @PostMapping(value = "/callback") @@ -33,4 +39,10 @@ public class WeChatCallbackController { weChatUserService.analyticalData(weChatResponse); return new ResponseEntity<>(HttpStatus.OK); } + + @ApiOperation("是否在线") + @PostMapping("/test") + public void callbackTest(@RequestBody String body) { + log.info("======================= the response json as {} ================== ", JSONUtil.toJsonStr(body)); + } } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatController.java index f986ecd3..c6dfca9a 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatController.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatController.java @@ -1,19 +1,25 @@ package com.baiye.modules.system.rest; +import cn.hutool.json.JSONUtil; +import com.baiye.constant.DefaultNumberConstants; import com.baiye.http.CommonResponse; +import com.baiye.model.dto.wechat.WeChatFriendDTO; +import com.baiye.model.enums.ResponseCode; import com.baiye.modules.system.service.WeChatUserService; +import com.baiye.util.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; /** * @author Enzo * @date : 2022/6/23 */ +@Slf4j @RestController @Api(tags = "微信相关接口") @RequestMapping("/api/wechat") @@ -23,13 +29,33 @@ public class WechatController { private final WeChatUserService weChatUserService; @ApiOperation("获取二维码") - @PostMapping("/getQrCode") - public CommonResponse read(String wechatId) { + @GetMapping("/getQrCode") + public CommonResponse getQrCode(String wechatId) { return CommonResponse.createBySuccess (weChatUserService.getQrCode(wechatId)); } + @ApiOperation("添加好友") + @PostMapping("/addFriend") + public CommonResponse addFriend + (@Validated @RequestBody WeChatFriendDTO weChatFriendDTO) { + return CommonResponse.createBySuccess + (weChatUserService.addFriend(weChatFriendDTO)); + + } + + + + + @ApiOperation("是否在线") + @GetMapping("/onlineStatus") + public CommonResponse onlineStatus() { + Integer byWechat = + weChatUserService.isOnlineByWechat(SecurityUtils.getCurrentUserId()); + return CommonResponse.createBySuccess(byWechat); + } + diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatSendMessageController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatSendMessageController.java new file mode 100644 index 00000000..92fd39f3 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/rest/WechatSendMessageController.java @@ -0,0 +1,106 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.baiye.modules.system.rest; + +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.modules.system.domain.WechatSendMessage; +import com.baiye.modules.system.service.WechatSendMessageService; +import com.baiye.modules.system.service.dto.WechatSendMessageDto; +import com.baiye.modules.system.service.dto.WechatSendMessageQueryCriteria; +import com.baiye.util.SecurityUtils; +import com.google.common.collect.ImmutableMap; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * @author Enzo + * @website https://el-admin.vip + * @date 2022-07-01 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "WechatSendMessageController管理") +@RequestMapping("/api/wechatSendMessage") +public class WechatSendMessageController { + + private final WechatSendMessageService wechatSendMessageService; + + @ApiOperation("导出数据") + @GetMapping(value = "/download") + public void exportWechatSendMessage(HttpServletResponse response, WechatSendMessageQueryCriteria criteria) throws IOException { + wechatSendMessageService.download(wechatSendMessageService.queryAll(criteria), response); + } + + @GetMapping + @ApiOperation("查询WechatSendMessage") + public ResponseEntity queryWechatSendMessage(WechatSendMessageQueryCriteria criteria, Pageable pageable) { + return new ResponseEntity<>(wechatSendMessageService.queryAll(criteria, pageable), HttpStatus.OK); + } + + + @GetMapping("/list") + @ApiOperation("查询WechatSendMessage") + public ResponseEntity listAll() { + List wechatSendMessageDtos = + wechatSendMessageService.querySendMessageByUserId(SecurityUtils.getCurrentUserId()); + Map map = + ImmutableMap.of("data", wechatSendMessageDtos, + "status", DefaultNumberConstants.ZERO_NUMBER); + return new ResponseEntity<>(map, HttpStatus.OK); + } + + @PostMapping + @ApiOperation("新增WechatSendMessageController") + public ResponseEntity createWechatSendMessage + (@Validated @RequestBody WechatSendMessage resources) { + return new ResponseEntity<>(wechatSendMessageService.create(resources), HttpStatus.CREATED); + } + + @PutMapping + @ApiOperation("修改WechatSendMessage") + public ResponseEntity updateWechatSendMessage(@Validated @RequestBody WechatSendMessage resources) { + wechatSendMessageService.update(resources); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @GetMapping("/changeIsDefault") + @ApiOperation("修改WechatSendMessage") + public ResponseEntity updateWechatSendMessage(Long id,Integer isDefault) { + wechatSendMessageService.changeStatus(id, isDefault); + return new ResponseEntity<>(HttpStatus.OK); + } + + + @DeleteMapping + @ApiOperation("删除WechatSendMessage") + public ResponseEntity deleteWechatSendMessage(@RequestBody Long[] ids) { + wechatSendMessageService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/AddWeChatFriendRecordService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/AddWeChatFriendRecordService.java new file mode 100644 index 00000000..463139c3 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/AddWeChatFriendRecordService.java @@ -0,0 +1,39 @@ +package com.baiye.modules.system.service; + +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import com.baiye.modules.system.domain.AddWeChatFriendRecord; + +import java.util.List; + +/** + * @author Enzo + * @date : 2022/7/1 + */ +public interface AddWeChatFriendRecordService { + /** + * id查找 + * @param id + * @return + */ + AddWeChatFriendRecordDTO findByClueId(Long id); + + /** + * 状态查找 + * @param num + * @return + */ + List findByStatus(Integer num); + + /** + * 是否成为好友 + * @param friendRecord + * @return + */ + Boolean whetherFriends(AddWeChatFriendRecord friendRecord); + + /** + * 保存记录 + * @param friendRecord + */ + void save(AddWeChatFriendRecord friendRecord); +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayComboService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayComboService.java index 86f6d0d0..e4c9f317 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayComboService.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayComboService.java @@ -31,4 +31,6 @@ public interface PayComboService { PayCombo findTemplateById(Long templateId); Object query(PayComboQueryCriteria payComboQueryCriteria); + + } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayTemplateUserService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayTemplateUserService.java index 71265628..a981f185 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayTemplateUserService.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/PayTemplateUserService.java @@ -21,4 +21,11 @@ public interface PayTemplateUserService { * @return */ PayComboUser queryUserByUserId(Long id); + + /** + * id查找状态 + * @param id + * @return + */ + Boolean findAddWeChatFlagByUserId(Long id); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WeChatUserService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WeChatUserService.java index ba3570be..ab57c811 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WeChatUserService.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WeChatUserService.java @@ -1,6 +1,7 @@ package com.baiye.modules.system.service; import com.baiye.http.WeChatResponse; +import com.baiye.model.dto.wechat.WeChatFriendDTO; /** * @author Enzo @@ -19,6 +20,20 @@ public interface WeChatUserService { * 处理微信消息请求 * @param weChatResponse */ - void analyticalData(WeChatResponse weChatResponse); + + /** + * 添加好友 + * @param weChatFriendDTO + * @return + */ + String addFriend(WeChatFriendDTO weChatFriendDTO); + + /** + * 判断用户是否在线 + * @param currentUser + * @return + */ + Integer isOnlineByWechat(Long currentUser); + } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WechatSendMessageService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WechatSendMessageService.java new file mode 100644 index 00000000..40967f5f --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/WechatSendMessageService.java @@ -0,0 +1,99 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.service; + +import com.baiye.modules.system.domain.WechatSendMessage; +import com.baiye.modules.system.service.dto.WechatSendMessageDto; +import com.baiye.modules.system.service.dto.WechatSendMessageQueryCriteria; +import org.springframework.data.domain.Pageable; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** +* @website https://el-admin.vip +* @description 服务接口 +* @author Enzo +* @date 2022-07-01 +**/ +public interface WechatSendMessageService { + + /** + * 查询数据分页 + * @param criteria 条件 + * @param pageable 分页参数 + * @return Map + */ + Map queryAll(WechatSendMessageQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria 条件参数 + * @return List + */ + List queryAll(WechatSendMessageQueryCriteria criteria); + + /** + * 根据ID查询 + * @param id ID + * @return WechatSendMessageDto + */ + WechatSendMessageDto findById(Long id); + + /** + * 创建 + * @param resources / + * @return WechatSendMessageDto + */ + WechatSendMessageDto create(WechatSendMessage resources); + + /** + * 编辑 + * @param resources / + */ + void update(WechatSendMessage resources); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 导出数据 + * @param all 待导出的数据 + * @param response / + * @throws IOException / + */ + void download(List all, HttpServletResponse response) throws IOException; + + /** + * 获取正在使用的模板 + * @param currentUserId + * @return + */ + List querySendMessageByUserId(Long currentUserId); + + /** + * 修改状态 + * + * @param id + * @param isDefault + */ + void changeStatus(Long id, Integer isDefault); +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/WechatSendMessageDto.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/WechatSendMessageDto.java new file mode 100644 index 00000000..fb465740 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/WechatSendMessageDto.java @@ -0,0 +1,57 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.sql.Timestamp; + +/** +* @website https://el-admin.vip +* @description / +* @author Enzo +* @date 2022-07-01 +**/ +@Data +public class WechatSendMessageDto implements Serializable { + + private Long id; + + /** 状态值 */ + private Integer status; + + /** 用户 */ + private Long userId; + + /** 发送消息 */ + private String greatMessage; + + /** 是否默认 */ + private Integer isDefault; + + /** 创建者 */ + private String createBy; + + /** 更新者 */ + private String updateBy; + + /** 创建日期 */ + private Timestamp createTime; + + /** 更新时间 */ + private Timestamp updateTime; +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/WechatSendMessageQueryCriteria.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/WechatSendMessageQueryCriteria.java new file mode 100644 index 00000000..d5d53f3a --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/WechatSendMessageQueryCriteria.java @@ -0,0 +1,27 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.service.dto; + +import lombok.Data; + +/** +* @website https://el-admin.vip +* @author Enzo +* @date 2022-07-01 +**/ +@Data +public class WechatSendMessageQueryCriteria{ +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/AddWeChatWeChatFriendRecordServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/AddWeChatWeChatFriendRecordServiceImpl.java new file mode 100644 index 00000000..1594533d --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/AddWeChatWeChatFriendRecordServiceImpl.java @@ -0,0 +1,73 @@ +package com.baiye.modules.system.service.impl; + +import cn.hutool.http.HttpStatus; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; +import com.baiye.config.properties.WeChatProperties; +import com.baiye.constant.WeChatRequestConstants; +import com.baiye.http.CommonResponse; +import com.baiye.http.WeChatResponse; +import com.baiye.model.enums.ResponseCode; +import com.baiye.modules.system.domain.AddWeChatFriendRecord; +import com.baiye.modules.system.repository.AddWeChatFriendRecordRepository; +import com.baiye.modules.system.service.AddWeChatFriendRecordService; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import com.baiye.modules.system.service.mapstruct.AddWeChatFriendRecordMapper; +import com.google.common.collect.ImmutableMap; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @author Enzo + * @date : 2022/7/1 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AddWeChatWeChatFriendRecordServiceImpl implements AddWeChatFriendRecordService { + private final AddWeChatFriendRecordRepository addWeChatFriendRecordRepository; + + private final AddWeChatFriendRecordMapper addWeChatFriendRecordMapper; + + private final WeChatProperties weChatProperties; + + @Override + public AddWeChatFriendRecordDTO findByClueId(Long clueId) { + AddWeChatFriendRecord addWechatFriendRecord = addWeChatFriendRecordRepository.findByClueId(clueId); + return addWeChatFriendRecordMapper.toDto(addWechatFriendRecord); + } + + @Override + public List findByStatus(Integer num) { + return addWeChatFriendRecordRepository.findByStatus(num); + } + + @Override + public Boolean whetherFriends(AddWeChatFriendRecord friendRecord) { + Map map = + ImmutableMap.of("wechat", friendRecord.getRobotWeChat(), + "targetWx", friendRecord.getUserWechat(), "type", 1); + // 发送请求 + String friendsInfo = HttpUtil.post + (weChatProperties.getGatewayHost(). + concat(WeChatRequestConstants.WE_CHAT_FRIEND_INFORMATION), map); + if (friendsInfo.contains(ResponseCode.SUCCESS.getDesc())) { + WeChatResponse weChatResponse = + JSONUtil.toBean(friendsInfo, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } + + @Override + public void save(AddWeChatFriendRecord friendRecord) { + addWeChatFriendRecordRepository.save(friendRecord); + } + +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayComboServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayComboServiceImpl.java index ca697934..224da5b7 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayComboServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayComboServiceImpl.java @@ -119,4 +119,6 @@ public class PayComboServiceImpl implements PayComboService { return payComboMapper.toDto(payComboRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, payComboQueryCriteria, criteriaBuilder))); } + + } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateUserServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateUserServiceImpl.java index 21ad5781..0d2ca538 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateUserServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/PayTemplateUserServiceImpl.java @@ -1,10 +1,15 @@ package com.baiye.modules.system.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import com.baiye.model.dto.TemplateUserDTO; import com.baiye.modules.system.domain.PayCombo; import com.baiye.modules.system.domain.PayComboUser; +import com.baiye.modules.system.domain.User; import com.baiye.modules.system.repository.PayComboRepository; import com.baiye.modules.system.repository.PayComboUserRepository; import com.baiye.modules.system.repository.UserRepository; @@ -16,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; +import java.util.Map; /** * @author yqy @@ -57,7 +63,8 @@ public class PayTemplateUserServiceImpl implements PayTemplateUserService { payComboUserOne.setBeginTime(createTime); payComboUserOne.setEndTime(newDate); } - userRepository.updateExpirationTimeById(newDate,userId); + payComboUserOne.setPayComboId(payTemplateId); + userRepository.updateExpirationTimeById(newDate, userId); return payComboUserRepository.save(payComboUserOne).getId() != null; } else { PayComboUser addPayComboUser = new PayComboUser(); @@ -74,6 +81,25 @@ public class PayTemplateUserServiceImpl implements PayTemplateUserService { @Override public PayComboUser queryUserByUserId(Long id) { - return payComboUserRepository.findTemplateByUserId(id); + return payComboUserRepository.findTemplateByUserId(id); + } + + @Override + public Boolean findAddWeChatFlagByUserId(Long id) { + List> templateDTOByUserId = payComboUserRepository.findTemplateDTOByUserId(id); + if (CollUtil.isNotEmpty(templateDTOByUserId)) { + List weChatFriendRecordList = + Convert.toList(TemplateUserDTO.class, templateDTOByUserId); + for (TemplateUserDTO recordDTO : weChatFriendRecordList) { + if (recordDTO.getStatus() == DefaultNumberConstants.ZERO_NUMBER && + recordDTO.getWeChatFlag() != null && recordDTO.getWeChatFlag()) { + if (recordDTO.getEndTime() != null && + recordDTO.getEndTime().after(DateUtil.date())) { + return Boolean.TRUE; + } + } + } + } + return Boolean.FALSE; } } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java index 52b4c978..1c99796d 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java @@ -45,6 +45,7 @@ import com.baiye.service.UserCacheClean; import com.baiye.util.*; import com.google.common.collect.ImmutableMap; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; @@ -64,6 +65,7 @@ import java.util.*; * @author Zheng Jie * @date 2018-11-23 */ +@Slf4j @Service @RequiredArgsConstructor @CacheConfig(cacheNames = "user") @@ -77,12 +79,14 @@ public class UserServiceImpl implements UserService { private final CompanyService companyService; private final UserCacheClean userCacheClean; private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + private final WeChatUserService weChatUserService; + private final OnlineUserService onlineUserService; private final OrganizeRepository organizeRepository; private final PayComboService payComboService; private final PayComboLogService payComboLogService; - private final PayTemplateUserService payTemplateUserService; private final OrganizeUserRepository organizeUserRepository; @@ -335,6 +339,8 @@ public class UserServiceImpl implements UserService { return userRepository.save(resources); } + + @Override @Transactional(rollbackFor = Exception.class) public void update(User resources) throws Exception { @@ -450,6 +456,10 @@ public class UserServiceImpl implements UserService { Organize organize = organizeRepository.findOrganizeById(organizeUser.getOrganizeId()); convert.setOrganizeName(organize.getOrganizeName()); } + + Boolean addWeChatFlag = payTemplateUserService.findAddWeChatFlagByUserId(convert.getId()); + convert.setAddWeChatFlag(addWeChatFlag); + convert.setOnlineStatus(weChatUserService.isOnlineByWechat(convert.getId())); for (Role role : roles) { if (role.getId() == DefaultNumberConstants.EIGHT_NUMBER) { convert.setIsManager(Boolean.TRUE); diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WeChatUserServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WeChatUserServiceImpl.java index 1ff128fc..d514d574 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WeChatUserServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WeChatUserServiceImpl.java @@ -1,40 +1,81 @@ package com.baiye.modules.system.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baiye.config.properties.WeChatProperties; +import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.WeChatRequestConstants; import com.baiye.exception.BadRequestException; +import com.baiye.feign.SourceClueClient; +import com.baiye.http.WeChatParseResponse; import com.baiye.http.WeChatResponse; +import com.baiye.model.dto.wechat.WeChatFriendDTO; +import com.baiye.model.dto.wechat.WeChatUserLoginDTO; import com.baiye.model.enums.ResponseCode; -import com.baiye.modules.system.repository.WeChatRepository; +import com.baiye.modules.system.domain.AddWeChatFriendRecord; +import com.baiye.modules.system.domain.Clue; +import com.baiye.modules.system.domain.WeChatUser; +import com.baiye.modules.system.repository.AddWeChatFriendRecordRepository; +import com.baiye.modules.system.repository.WeChatUserRepository; +import com.baiye.modules.system.service.AddWeChatFriendRecordService; import com.baiye.modules.system.service.WeChatUserService; +import com.baiye.socket.WebSocketServer; +import com.baiye.util.RedisUtils; +import com.baiye.util.SecurityUtils; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * @author Enzo * @date : 2022/6/23 */ +@Slf4j @Service @RequiredArgsConstructor public class WeChatUserServiceImpl implements WeChatUserService { - private final WeChatRepository weChatRepository; + private final RedisUtils redisUtils; + private final WebSocketServer webSocketServer; + + private final SourceClueClient sourceClueClient; private final WeChatProperties weChatProperties; + private final WeChatUserRepository weChatUserRepository; + + + private final AddWeChatFriendRecordService addWeChatFriendRecordService; + + private final AddWeChatFriendRecordRepository addWeChatFriendRecordRepository; + + + + + @Override public String getQrCode(String wechatId) { + String uuid = IdUtil.randomUUID(); + log.info("============== uuid as {} ================", uuid); Map getQrCodeMap = - ImmutableMap.of("uuid", IdUtil.randomUUID()); - if (StringUtils.isNotBlank(wechatId)){ + ImmutableMap.of("uuid", uuid); + // 保存 + redisUtils.set(uuid, SecurityUtils.getCurrentUserId(), + DefaultNumberConstants.THREE_NUMBER, + TimeUnit.MINUTES); + if (StringUtils.isNotBlank(wechatId)) { getQrCodeMap.put("wechat", wechatId); } String getQrCodeResult = HttpUtil.get @@ -48,8 +89,120 @@ public class WeChatUserServiceImpl implements WeChatUserService { throw new BadRequestException(ResponseCode.FAILED_GET_QR_CODE.getDesc()); } + + @Override + public String addFriend(WeChatFriendDTO weChatFriendDTO) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + WeChatUser byUserId = weChatUserRepository.findByUserId(currentUserId); + if (ObjectUtil.isNull(byUserId)) { + throw new BadRequestException(ResponseCode.ACCOUNT_NOT_LOGGED_OR_NOT_ONLINE.getDesc()); + } + AddWeChatFriendRecord wechatFriendRecord = new AddWeChatFriendRecord(); + String tagetWxId = weChatFriendDTO.getTagetWxId(); + // 拼接参数 + Map map = Maps.newHashMap(); + map.put("wechat", byUserId.getWxId()); + map.put("tagetWxId", weChatFriendDTO.getTagetWxId()); + map.put("helloContent", weChatFriendDTO.getSendContent()); + map.put("type", weChatFriendDTO.getType()); + + if (weChatFriendDTO.getType() == DefaultNumberConstants.ZERO_NUMBER + && StringUtils.isBlank(weChatFriendDTO.getTagetWxId())) { + Clue body = sourceClueClient.queryDetails + (Long.parseLong(weChatFriendDTO.getClueId())).getBody(); + tagetWxId = body.getNid(); + map.put("tagetWxId", body.getNid()); + } + String addedFriendResult = HttpUtil.post + (weChatProperties.getGatewayHost(). + concat(WeChatRequestConstants.WE_CHAT_ADD_FRIEND), map); + wechatFriendRecord.setUserId(currentUserId); + wechatFriendRecord.setUserWechat(tagetWxId); + wechatFriendRecord.setRobotWeChat(byUserId.getWxId()); + wechatFriendRecord.setType(DefaultNumberConstants.ONE_NUMBER); + wechatFriendRecord.setSendContent(weChatFriendDTO.getSendContent()); + wechatFriendRecord.setClueId(Long.parseLong(weChatFriendDTO.getClueId())); + log.info("======== response as {} ==============", JSONUtil.toJsonStr(addedFriendResult)); + if (addedFriendResult.contains(ResponseCode.SUCCESS.getDesc())) { + WeChatResponse weChatResponse = + JSONUtil.toBean(addedFriendResult, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + addWeChatFriendRecordRepository.save(wechatFriendRecord); + return ResponseCode.SUCCESS.getDesc(); + } + throw new BadRequestException(StringUtils.isNotBlank(weChatResponse.getMsg()) + ? weChatResponse.getMsg() : ResponseCode.FAILED_ADD_FRIEND.getDesc()); + } + return ResponseCode.FAILURE.getDesc(); + } + + @Override + public Integer isOnlineByWechat(Long currentUserId) { + WeChatUser byUserId = weChatUserRepository.findByUserId(currentUserId); + if (ObjectUtil.isNotNull(byUserId) && StringUtils.isNotBlank(byUserId.getWxId())) { + Map map = + ImmutableMap.of("wechat", byUserId.getWxId(), + "loginType", byUserId.getLoginType(), + "needDetailInfo", Boolean.FALSE); + + String getQrCodeResult = HttpUtil.get + (weChatProperties.getGatewayHost(). + concat(WeChatRequestConstants.WE_CHAT_STATUS), map); + if (getQrCodeResult.contains(ResponseCode.SUCCESS.getDesc())) { + WeChatResponse weChatResponse = + JSONUtil.toBean(getQrCodeResult, WeChatResponse.class); + return JSONUtil.toBean + (JSONUtil.toJsonStr + (weChatResponse.getData()), + WeChatParseResponse.class).getStatus(); + } + } + return DefaultNumberConstants.MINUS_ONE_NUMBER; + } + + @Override public void analyticalData(WeChatResponse weChatResponse) { + // 处理登录请求 + if (weChatResponse.getStatus() == + DefaultNumberConstants.TWO_HUNDRED_ONE) { + WeChatUserLoginDTO userLoginDTO = + JSONUtil.toBean(JSONUtil.toJsonStr(weChatResponse.getData()), WeChatUserLoginDTO.class); + String cusQrUuId = userLoginDTO.getCusQrUuId(); + // 查询用户id + Long currentUserId = Long.parseLong(redisUtils.get(cusQrUuId).toString()); + // 清除信息 + redisUtils.del(cusQrUuId); + if (StringUtils.isBlank(cusQrUuId)) { + return; + } + WeChatUser byUserId = weChatUserRepository.findByUserId(currentUserId); + if (ObjectUtil.isNull(byUserId)) { + byUserId = new WeChatUser(); + saveWeChatUser(userLoginDTO, currentUserId, byUserId); + return; + } + saveWeChatUser(userLoginDTO, currentUserId, byUserId); + } + } + + private void saveWeChatUser(WeChatUserLoginDTO userLoginDTO, Long currentUserId, WeChatUser byUserId) { + byUserId.setLoginDate(DateUtil.date()); + byUserId.setRandomId(userLoginDTO.getRandomid()); + byUserId.setToken(userLoginDTO.getToken()); + byUserId.setWxId(userLoginDTO.getWxid()); + byUserId.setLoginType(userLoginDTO.getLoginType()); + byUserId.setNickname(userLoginDTO.getNickname()); + byUserId.setUserId(currentUserId); + extracted(currentUserId); + weChatUserRepository.save(byUserId); + } + private void extracted(Long currentUserId) { + JSONObject jsonObject = new JSONObject(); + jsonObject.putOpt("message", "扫码登录成功"); + jsonObject.putOpt("type", "qrCodeSuccess"); + jsonObject.putOpt("code", DefaultNumberConstants.TWO_HUNDRED); + webSocketServer.sendMessage(JSONUtil.toJsonStr(jsonObject), currentUserId); } } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WechatSendMessageServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WechatSendMessageServiceImpl.java new file mode 100644 index 00000000..8cedc116 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/WechatSendMessageServiceImpl.java @@ -0,0 +1,136 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.baiye.modules.system.service.impl; + +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.exception.BadRequestException; +import com.baiye.model.enums.ResponseCode; +import com.baiye.modules.system.domain.WechatSendMessage; +import com.baiye.modules.system.repository.WechatSendMessageRepository; +import com.baiye.modules.system.service.WechatSendMessageService; +import com.baiye.modules.system.service.dto.WechatSendMessageDto; +import com.baiye.modules.system.service.dto.WechatSendMessageQueryCriteria; +import com.baiye.modules.system.service.mapstruct.WechatSendMessageMapper; +import com.baiye.util.*; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Enzo + * @website https://el-admin.vip + * @description 服务实现 + * @date 2022-07-01 + **/ +@Service +@RequiredArgsConstructor +public class WechatSendMessageServiceImpl implements WechatSendMessageService { + + private final WechatSendMessageRepository wechatSendMessageRepository; + private final WechatSendMessageMapper wechatSendMessageMapper; + + @Override + public Map queryAll(WechatSendMessageQueryCriteria criteria, Pageable pageable) { + Page page = wechatSendMessageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); + return PageUtil.toPage(page.map(wechatSendMessageMapper::toDto)); + } + + @Override + public List queryAll(WechatSendMessageQueryCriteria criteria) { + return wechatSendMessageMapper.toDto(wechatSendMessageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder))); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public WechatSendMessageDto findById(Long id) { + WechatSendMessage wechatSendMessage = wechatSendMessageRepository.findById(id).orElseGet(WechatSendMessage::new); + ValidationUtil.isNull(wechatSendMessage.getId(), "WechatSendMessage", "id", id); + return wechatSendMessageMapper.toDto(wechatSendMessage); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public WechatSendMessageDto create(WechatSendMessage resources) { + resources.setUserId(SecurityUtils.getCurrentUserId()); + return wechatSendMessageMapper.toDto(wechatSendMessageRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(WechatSendMessage resources) { + WechatSendMessage wechatSendMessage = wechatSendMessageRepository.findById + (resources.getId()).orElseGet(WechatSendMessage::new); + ValidationUtil.isNull(wechatSendMessage.getId(), "WechatSendMessage", "id", resources.getId()); + wechatSendMessage.copy(resources); + + wechatSendMessageRepository.save(wechatSendMessage); + } + + @Override + public void deleteAll(Long[] ids) { + for (Long id : ids) { + wechatSendMessageRepository.deleteById(id); + } + } + + @Override + public void download(List all, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (WechatSendMessageDto wechatSendMessage : all) { + Map map = new LinkedHashMap<>(); + map.put("状态值", wechatSendMessage.getStatus()); + map.put("用户", wechatSendMessage.getUserId()); + map.put("发送消息", wechatSendMessage.getGreatMessage()); + map.put("是否默认", wechatSendMessage.getIsDefault()); + map.put("创建者", wechatSendMessage.getCreateBy()); + map.put("更新者", wechatSendMessage.getUpdateBy()); + map.put("创建日期", wechatSendMessage.getCreateTime()); + map.put("更新时间", wechatSendMessage.getUpdateTime()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } + + @Override + public List querySendMessageByUserId(Long currentUserId) { + return wechatSendMessageMapper.toDto(wechatSendMessageRepository.findByUserId(currentUserId)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void changeStatus(Long id, Integer isDefault) { + WechatSendMessage byIsDefault = + wechatSendMessageRepository.findByIsDefault(DefaultNumberConstants.ONE_NUMBER); + if (byIsDefault != null && + isDefault == DefaultNumberConstants.ZERO_NUMBER && + byIsDefault.getId().equals(id)) { + throw new BadRequestException(ResponseCode.TEMPLATE_CHANGE_ERROR.getDesc()); + } + wechatSendMessageRepository.updateDefaultByDefault + (DefaultNumberConstants.ZERO_NUMBER, DefaultNumberConstants.ONE_NUMBER); + wechatSendMessageRepository.updateDefaultById + (DefaultNumberConstants.ONE_NUMBER, id); + } +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/mapstruct/AddWeChatFriendRecordMapper.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/mapstruct/AddWeChatFriendRecordMapper.java new file mode 100644 index 00000000..59720c6f --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/mapstruct/AddWeChatFriendRecordMapper.java @@ -0,0 +1,30 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.baiye.modules.system.service.mapstruct; + +import com.baiye.model.base.BaseMapper; +import com.baiye.modules.system.domain.AddWeChatFriendRecord; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author Zheng Jie +* @date 2019-03-25 +*/ +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface AddWeChatFriendRecordMapper extends BaseMapper { +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/mapstruct/WechatSendMessageMapper.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/mapstruct/WechatSendMessageMapper.java new file mode 100644 index 00000000..0ebb073d --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/mapstruct/WechatSendMessageMapper.java @@ -0,0 +1,32 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.system.service.mapstruct; + +import com.baiye.model.base.BaseMapper; +import com.baiye.modules.system.domain.WechatSendMessage; +import com.baiye.modules.system.service.dto.WechatSendMessageDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @website https://el-admin.vip +* @author Enzo +* @date 2022-07-01 +**/ +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface WechatSendMessageMapper extends BaseMapper { + +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/socket/WebSocketServer.java b/manage/ad-platform-management/src/main/java/com/baiye/socket/WebSocketServer.java index 520735fd..056db516 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/socket/WebSocketServer.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/socket/WebSocketServer.java @@ -35,7 +35,6 @@ import java.util.concurrent.atomic.AtomicInteger; public class WebSocketServer { private Long onlineId; - @PostConstruct public void init() { log.info("websocket 加载"); @@ -232,7 +231,6 @@ public class WebSocketServer { if (queryString != null && StringUtils.isNotBlank(StringUtils.substring(queryString, DefaultNumberConstants.FOURTEEN_NUMBER))) { String substring = queryString.substring(DefaultNumberConstants.FOURTEEN_NUMBER); - log.info("=================== the sub string as {} ===================", substring); return UserTokenManager.getUserId(substring); } return null; diff --git a/manage/ad-platform-management/src/main/java/com/baiye/timed/WeChatAddFriendSync.java b/manage/ad-platform-management/src/main/java/com/baiye/timed/WeChatAddFriendSync.java new file mode 100644 index 00000000..66041cf7 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/timed/WeChatAddFriendSync.java @@ -0,0 +1,58 @@ +package com.baiye.timed; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.modules.system.domain.AddWeChatFriendRecord; +import com.baiye.modules.system.domain.User; +import com.baiye.modules.system.service.AddWeChatFriendRecordService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Enzo + * @date : 2022/7/4 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class WeChatAddFriendSync { + + private final AddWeChatFriendRecordService addWeChatFriendRecordService; + + + + /** + * 过期账号自动设置过期 + */ + // @Scheduled(cron = "0 */5 * * * ?") + @Scheduled(cron = "0 0/5 * * * ?") + public void checkUserBalance() { + List addWeChatFriendRecords = + addWeChatFriendRecordService.findByStatus(DefaultNumberConstants.ZERO_NUMBER); + if (CollUtil.isNotEmpty(addWeChatFriendRecords)) { + for (AddWeChatFriendRecord friendRecord : addWeChatFriendRecords) { + Boolean aBoolean = addWeChatFriendRecordService.whetherFriends(friendRecord); + if (Boolean.TRUE.equals(aBoolean)){ + friendRecord.setStatus(DefaultNumberConstants.ONE_NUMBER); + friendRecord.setAddFriendTime(DateUtil.date()); + addWeChatFriendRecordService.save(friendRecord); + continue; + } + // 偏移三天 + DateTime dateTime = DateUtil.offsetDay(DateUtil.date(), + DefaultNumberConstants.MINUS_THREE_NUMBER); + if (dateTime.after(friendRecord.getAddFriendTime())) { + friendRecord.setStatus(DefaultNumberConstants.MINUS_TWO_NUMBER); + addWeChatFriendRecordService.save(friendRecord); + } + } + } + } +} diff --git a/manage/ad-platform-management/src/test/java/com/baiye/PayTest.java b/manage/ad-platform-management/src/test/java/com/baiye/PayTest.java index beadf9de..8e03a5a9 100644 --- a/manage/ad-platform-management/src/test/java/com/baiye/PayTest.java +++ b/manage/ad-platform-management/src/test/java/com/baiye/PayTest.java @@ -1,6 +1,8 @@ package com.baiye; +import com.baiye.model.dto.wechat.WeChatFriendDTO; import com.baiye.modules.system.service.AliPayService; +import com.baiye.modules.system.service.WeChatUserService; import com.baiye.modules.system.service.dto.AliPayPcDTO; import lombok.extern.slf4j.Slf4j; import org.junit.Test; @@ -23,6 +25,9 @@ public class PayTest { @Resource private AliPayService aliPayService; + @Resource + private WeChatUserService weChatUserService; + @Test @Transactional(rollbackFor = Exception.class) public void getSetting() { @@ -30,6 +35,14 @@ public class PayTest { aliPayPcDTO.setAmount(10.0); aliPayService.aliPayPc(aliPayPcDTO); - } + @Test + @Transactional(rollbackFor = Exception.class) + public void addFriend() { + WeChatFriendDTO weChatFriendDTO = new WeChatFriendDTO(); + weChatFriendDTO.setType(1); + weChatFriendDTO.setTagetWxId("15168138353"); + weChatUserService.addFriend(weChatFriendDTO); + } + } diff --git a/pom.xml b/pom.xml index 75458317..997486ce 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,11 @@ ${alipay.version} + + com.vdurmont + emoji-java + ${emoji.version} + diff --git a/services/ad-platform-source/src/main/java/com/baiye/feign/OrganizeClient.java b/services/ad-platform-source/src/main/java/com/baiye/feign/OrganizeClient.java index 66e91345..5c955823 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/feign/OrganizeClient.java +++ b/services/ad-platform-source/src/main/java/com/baiye/feign/OrganizeClient.java @@ -2,7 +2,6 @@ package com.baiye.feign; import com.baiye.feign.fallback.OrganizeClientFallback; import com.baiye.model.dto.ClueDto; -import com.baiye.model.dto.OrganizeQueryCriteria; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.ResponseEntity; diff --git a/services/ad-platform-source/src/main/java/com/baiye/feign/WeChatAddFriendClient.java b/services/ad-platform-source/src/main/java/com/baiye/feign/WeChatAddFriendClient.java new file mode 100644 index 00000000..e796d454 --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/feign/WeChatAddFriendClient.java @@ -0,0 +1,30 @@ +package com.baiye.feign; + +import com.baiye.feign.fallback.OrganizeClientFallback; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import org.springframework.cloud.openfeign.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.RequestParam; + +/** + * @author Enzo + * @date 2022-7-1 + * 微信添加好友请求 + */ + +@FeignClient(value = "ad-platform-management",fallback = OrganizeClientFallback.class) +public interface WeChatAddFriendClient { + + String PAY_PREFIX = "/api/addFriendRecord"; + + /** + * 查询组标签和任务标签 + * @param clueId + * @return + */ + @GetMapping(PAY_PREFIX + "/findByClueId") + ResponseEntity findByClueId(@RequestParam("clueId") Long clueId); + +} diff --git a/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/OrganizeClientFallback.java b/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/OrganizeClientFallback.java index d6d4cb2e..1f802eec 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/OrganizeClientFallback.java +++ b/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/OrganizeClientFallback.java @@ -2,7 +2,6 @@ package com.baiye.feign.fallback; import com.baiye.feign.OrganizeClient; import com.baiye.model.dto.ClueDto; -import com.baiye.model.dto.OrganizeQueryCriteria; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; diff --git a/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/WeChatAddFriendClientFallback.java b/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/WeChatAddFriendClientFallback.java new file mode 100644 index 00000000..ad1ce66c --- /dev/null +++ b/services/ad-platform-source/src/main/java/com/baiye/feign/fallback/WeChatAddFriendClientFallback.java @@ -0,0 +1,23 @@ +package com.baiye.feign.fallback; + +import com.baiye.feign.WeChatAddFriendClient; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +/** + * @author Enzo + * @date 2022-7-1 + */ +@Component +public class WeChatAddFriendClientFallback implements WeChatAddFriendClient { + + + @Override + public ResponseEntity findByClueId(Long clueId) { + return null; + } +} diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java index 6394385a..caf97892 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java @@ -2,15 +2,13 @@ package com.baiye.module.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.exception.BadRequestException; -import com.baiye.feign.OrganizeClient; -import com.baiye.feign.ReportClient; -import com.baiye.feign.TaskClient; -import com.baiye.feign.UserClient; +import com.baiye.feign.*; import com.baiye.model.dto.*; import com.baiye.model.entity.BaseClue; import com.baiye.model.vo.ResSourceLabel; @@ -54,6 +52,10 @@ public class ClueServiceImpl implements ClueService { private final UserClient userClient; private final ConductRecordRepository conductRecordRepository; + private final WeChatAddFriendClient weChatAddFriendClient; + + + private static SimpleDateFormat timeOne = new SimpleDateFormat("yyyyMMddHHmmssSSS"); @Override @@ -217,6 +219,13 @@ public class ClueServiceImpl implements ClueService { if (CollUtil.isEmpty(baseLabel)) { clueDto.setBaseLabel(new ArrayList<>()); } + AddWeChatFriendRecordDTO recordDTO = weChatAddFriendClient.findByClueId(clueDto.getId()).getBody(); + clueDto.setAddWeChatStatus(DefaultNumberConstants.MINUS_ONE_NUMBER); + if (recordDTO != null) { + clueDto.setAddWeChatType(recordDTO.getType()); + clueDto.setAddWeChatStatus(recordDTO.getStatus()); + clueDto.setAddWeChatTime(recordDTO.getAddFriendTime()); + } } } return clueDtoList;