添加计粉代码
parent
e269fa19ec
commit
ba821a8372
@ -0,0 +1,26 @@
|
||||
package com.baiye.constant;
|
||||
|
||||
/**
|
||||
* 支付相关 常量定义
|
||||
*
|
||||
* @author Enzo
|
||||
* @date : 2021/6/16
|
||||
*/
|
||||
public class PayConstants {
|
||||
|
||||
private PayConstants() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 付款信息 反馈中文字段补充前缀
|
||||
*/
|
||||
public static final String PAY_TITLE = "回跟营销系统支付订单:";
|
||||
|
||||
/**
|
||||
* 返回的信息字段内容对应 key
|
||||
*/
|
||||
public static final String OUT_TRADE_NO = "out_trade_no";
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
|
||||
package com.baiye.constant;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-3-27
|
||||
*/
|
||||
public interface WeChatRequestConstants {
|
||||
|
||||
|
||||
/**
|
||||
* 获取二维码
|
||||
*/
|
||||
String GET_QR_CODE = "/api/qrCodeLogin/";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 全局设置
|
||||
*/
|
||||
String GLOBAL_SETTING = "/api/global-settings/";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 弹窗登录
|
||||
*/
|
||||
String GET_PUSH_LOGIN = "/api/pushLogin/";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 创建设备
|
||||
*/
|
||||
String CREATE_EQUIPMENT= "/api/addToScanRobotInfo/";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 退出微信
|
||||
*/
|
||||
String WE_CHAT_LOGOUT = "/wechat/v1/batchLogout";
|
||||
|
||||
/**
|
||||
* 发送文本消息
|
||||
*/
|
||||
String WE_CHAT_SEND_TXT = "/wechat/v1/sendtext";
|
||||
|
||||
/**
|
||||
* 发送图片
|
||||
*/
|
||||
String WE_CHAT_SEND_PICTURE = "/wechat/v1/sendurlpic";
|
||||
/**
|
||||
* 发送gif
|
||||
*/
|
||||
String WE_CHAT_SEND_GIF = "/wechat/v1/sendGif";
|
||||
|
||||
/**
|
||||
* 发送视频
|
||||
*/
|
||||
String WE_CHAT_SEND_VIDEO = "/wechat/v1/sendCdnVideoMsg";
|
||||
|
||||
/**
|
||||
* 获取好友信息
|
||||
*/
|
||||
String WE_CHAT_FRIEND_INFORMATION = "/wechat/v1/friendinfo";
|
||||
|
||||
/**
|
||||
* 获取通讯录信息
|
||||
*/
|
||||
String WE_CHAT_GET_CONTACT = "/wechat/v1/getAllContact";
|
||||
/**
|
||||
* 同步通讯录
|
||||
*/
|
||||
String WE_CHAT_SYNC_CONTACT = "/wechat/v1/syncContact";
|
||||
/**
|
||||
* 添加好友
|
||||
*/
|
||||
String WE_CHAT_ADD_FRIEND = "/wechat/v1/addfriends";
|
||||
|
||||
|
||||
/**
|
||||
* 在线状态检测
|
||||
*/
|
||||
String WE_CHAT_STATUS = "/wechat/v1/wecatstatus";
|
||||
|
||||
/**
|
||||
* 发送文本消息
|
||||
*/
|
||||
String WE_SEND_TEXT = "/wechat/v1/sendtext";
|
||||
|
||||
/**
|
||||
* 发送图片
|
||||
*/
|
||||
String WE_SEND_PIC = "/wechat/v1/sendurlpic";
|
||||
/**
|
||||
* 发生gif
|
||||
*/
|
||||
String WE_SEND_GIF = "/wechat/v1/sendGif";
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.baiye.modules.distribute.controller;
|
||||
|
||||
|
||||
import com.baiye.modules.distribute.dto.AliPayPcDTO;
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.service.AliPayService;
|
||||
import com.baiye.result.R;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
*/
|
||||
@Tag(name = "支付宝支付")
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping(value = "/pay/aliPay")
|
||||
@AllArgsConstructor
|
||||
public class AliPayController {
|
||||
|
||||
private final AliPayService aliPayService;
|
||||
|
||||
@Operation(summary = "创建pc订单")
|
||||
@PostMapping(value = "/pcPay")
|
||||
public R<Map<String, Object>> pcPay(@Validated @RequestBody AliPayPcDTO aliPayPcDTO) {
|
||||
return R.ok(aliPayService.aliPayPc(aliPayPcDTO));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "订单号查找")
|
||||
@GetMapping(value = "/find/order")
|
||||
public R<PayOrder> frontRcvResponse(@RequestParam("orderNo") String orderNo) {
|
||||
return R.ok(aliPayService.findOrderByNo(orderNo));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* pc 回调接收参数
|
||||
*
|
||||
* @param request request
|
||||
* @return 返回结果
|
||||
*/
|
||||
@Operation(summary = "订单回调")
|
||||
@RequestMapping(value = "/pay-notify", produces = "text/html;charset=utf-8")
|
||||
public String frontRcvResponse(HttpServletRequest request) {
|
||||
return aliPayService.pcNotifyResponse(request);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package com.baiye.modules.distribute.controller;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.qo.PayOrderQo;
|
||||
import com.baiye.modules.distribute.service.LoginEquipmentService;
|
||||
import com.baiye.modules.distribute.vo.AddFriendVo;
|
||||
import com.baiye.modules.distribute.vo.PayOrderVO;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baiye.result.R;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
|
||||
@Tag(name = "微信设备")
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping(value = "/equipment")
|
||||
@AllArgsConstructor
|
||||
public class LoginEquipmentController {
|
||||
|
||||
private LoginEquipmentService loginEquipmentService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "分页查询记录")
|
||||
public R<PageResult<WeChatAccountVO>> getClueRecordPage(@Validated PageParam pageParam, AccountQo qo) {
|
||||
return R.ok(loginEquipmentService.queryPage(pageParam, qo));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package com.baiye.modules.distribute.controller;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.modules.distribute.qo.PayOrderQo;
|
||||
import com.baiye.modules.distribute.service.PayOrderService;
|
||||
import com.baiye.modules.distribute.vo.PayOrderVO;
|
||||
import com.baiye.result.R;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@Tag(name = "订单记录")
|
||||
@RequestMapping("/pay/order")
|
||||
public class PayOrderController {
|
||||
|
||||
private final PayOrderService payOrderService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "分页查询记录")
|
||||
public R<PageResult<PayOrderVO>> getClueRecordPage(@Validated PageParam pageParam, PayOrderQo qo) {
|
||||
return R.ok(payOrderService.queryPage(pageParam, qo));
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
package com.baiye.modules.distribute.controller;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.modules.distribute.dto.CreateCodeDTO;
|
||||
import com.baiye.modules.distribute.dto.PushCodeDTO;
|
||||
import com.baiye.modules.distribute.dto.WeChatAddFriendDTO;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.service.WeChatService;
|
||||
import com.baiye.modules.distribute.vo.AddFriendVo;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baiye.result.R;
|
||||
import com.baiye.security.util.SecurityUtils;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/27
|
||||
*/
|
||||
@RestController
|
||||
@Tag(name = "微信账号")
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/wechat")
|
||||
public class WeChatController {
|
||||
|
||||
|
||||
private final WeChatService weChatService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "分页查询账号")
|
||||
public R<PageResult<WeChatAccountVO>> getClueRecordPage(@Validated PageParam pageParam, AccountQo qo) {
|
||||
return R.ok(weChatService.queryPage(pageParam, qo));
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/global/setting")
|
||||
@Operation(summary = "全局设置")
|
||||
public R<String> getClueRecordPage(String callbackUrl) {
|
||||
return R.ok(weChatService.globalSetting(callbackUrl));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/createCode")
|
||||
@Operation(description = "创建二维码")
|
||||
public R<Object> createCode(@RequestBody CreateCodeDTO createCodeDTO) {
|
||||
return R.ok(weChatService.createQrCode(createCodeDTO));
|
||||
}
|
||||
|
||||
|
||||
@Operation(description = "弹窗登录接口")
|
||||
@PostMapping("/push/code")
|
||||
public R<Object> pushCode(@Validated @RequestBody PushCodeDTO pushCodeDTO) {
|
||||
return R.ok(weChatService.pushCode(pushCodeDTO));
|
||||
}
|
||||
|
||||
@Operation(description = "添加好友")
|
||||
@PostMapping("/addFriend")
|
||||
public R<Object> addFriend(@Validated @RequestBody WeChatAddFriendDTO weChatFriendDTO) {
|
||||
return R.ok(weChatService.addFriend(weChatFriendDTO));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/create/equipment")
|
||||
@Operation(summary = "创建设备")
|
||||
public R<String> createEquipment(Integer num,Integer packageType) {
|
||||
return Boolean.TRUE.equals(weChatService.createEquipment(num, packageType, SecurityUtils.getCurrentUserId())) ? R.ok() : R.failed("创建设备失败");
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/friend/page")
|
||||
@Operation(summary = "添加好友记录")
|
||||
public R<PageResult<AddFriendVo>> getData(@Validated PageParam pageParam, AccountQo qo) {
|
||||
return R.ok(weChatService.queryDateData(pageParam, qo));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package com.baiye.modules.distribute.controller;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baiye.modules.distribute.service.WechatCallbackService;
|
||||
import com.baiye.result.R;
|
||||
import com.baiye.result.WeChatResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2022-8-11
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/api/wechat")
|
||||
@RequiredArgsConstructor
|
||||
public class WechatCallbackController {
|
||||
|
||||
private final WechatCallbackService wechatCallbackService;
|
||||
|
||||
/**
|
||||
* 请求三方微信操作回调
|
||||
*/
|
||||
@PostMapping("/callback")
|
||||
public R<String> wechatCallback(@RequestBody WeChatResponse weChatResponse) {
|
||||
log.info("================== the response {} ==================", JSONUtil.toJsonStr(weChatResponse));
|
||||
wechatCallbackService.analyticalData(weChatResponse);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.baiye.modules.distribute.converter;
|
||||
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.vo.PayOrderVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/28
|
||||
*/
|
||||
@Mapper
|
||||
public interface PayOrderConverter {
|
||||
|
||||
PayOrderConverter INSTANCE = Mappers.getMapper(PayOrderConverter.class);
|
||||
|
||||
/**
|
||||
* 实体转vo
|
||||
* @param payOrder
|
||||
* @return
|
||||
*/
|
||||
PayOrderVO entityToVo(PayOrder payOrder);
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.baiye.modules.distribute.converter;
|
||||
|
||||
import com.baiye.modules.distribute.entity.WeChatAccount;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/29
|
||||
*/
|
||||
@Mapper
|
||||
public interface WeChatAccountConverter {
|
||||
|
||||
WeChatAccountConverter INSTANCE = Mappers.getMapper(WeChatAccountConverter.class);
|
||||
|
||||
/**
|
||||
* 实体转vo
|
||||
* @param weChatAccount
|
||||
* @return
|
||||
*/
|
||||
WeChatAccountVO entityToVo(WeChatAccount weChatAccount);
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/3/16
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class AliPayPcDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6500373305956248683L;
|
||||
|
||||
@NotNull(message = "套餐类型不能为空")
|
||||
private Integer packageType;
|
||||
|
||||
@NotNull(message = "数量不能为空")
|
||||
@Min(value = 1,message = "最小为1")
|
||||
private Integer num;
|
||||
|
||||
@NotNull(message = "续费类型不能为空")
|
||||
private Boolean isRenew;
|
||||
|
||||
private Integer robotId;
|
||||
|
||||
private String remark;
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/27
|
||||
*/
|
||||
@Data
|
||||
public class CreateCodeDTO {
|
||||
|
||||
private String robotId;
|
||||
|
||||
private String wxId;
|
||||
|
||||
private String cityInfo;
|
||||
|
||||
private String changedUid;
|
||||
|
||||
private String robotVersion;
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
@Data
|
||||
public class EquipmentDTO {
|
||||
|
||||
private Integer status;
|
||||
|
||||
private List<RoBotDTO> data;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
@Getter
|
||||
@Setter
|
||||
public static class RoBotDTO {
|
||||
|
||||
private String robotAccount;
|
||||
|
||||
private Integer robotId;
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/27
|
||||
*/
|
||||
@Data
|
||||
public class PushCodeDTO {
|
||||
|
||||
private String robotId;
|
||||
|
||||
private String wxId;
|
||||
|
||||
private String cityInfo;
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/6/27
|
||||
*/
|
||||
@Data
|
||||
public class WeChatAddFriendDTO {
|
||||
|
||||
@NonNull
|
||||
private String wechat;
|
||||
|
||||
@NonNull
|
||||
private Integer type;
|
||||
|
||||
@NonNull
|
||||
private String tagetWxId;
|
||||
|
||||
@NonNull
|
||||
private String helloContent;
|
||||
|
||||
@NonNull
|
||||
private String appKey;
|
||||
|
||||
@NonNull
|
||||
private String appSecret;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/6/27
|
||||
*/
|
||||
@Data
|
||||
public class WeChatFriendDTO {
|
||||
|
||||
@Schema(title = "机器人微信ID")
|
||||
private String robotWxId;
|
||||
|
||||
@Schema(title = "添加好友方式")
|
||||
private Integer addFriendType;
|
||||
|
||||
@Schema(title = "省")
|
||||
private String province;
|
||||
|
||||
@Schema(title = "城市")
|
||||
private String city;
|
||||
|
||||
@Schema(title = "昵称")
|
||||
private String nickName;
|
||||
|
||||
@Schema(title = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(title = "通过时间")
|
||||
private Long addAcceptTime;
|
||||
|
||||
|
||||
@Schema(title = "微信ID")
|
||||
private String alias;
|
||||
|
||||
@Schema(title = "头像")
|
||||
private String bigHeadImgUrl;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/6/30
|
||||
*/
|
||||
@Data
|
||||
public class WeChatUserLoginDTO implements Serializable {
|
||||
|
||||
|
||||
private String pit;
|
||||
|
||||
private String wxId;
|
||||
|
||||
private String nickname;
|
||||
|
||||
private String bigHeadImgUrl;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import com.baiye.entity.BaseEntity;
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baiye.validation.group.UpdateGroup;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableAlias("le")
|
||||
@TableName(value = "tb_login_equipment")
|
||||
public class LoginEquipment extends BaseEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@Schema(title = "id")
|
||||
@NotNull(message = "id", groups = {UpdateGroup.class})
|
||||
private Long id;
|
||||
|
||||
|
||||
@Schema(name = "user_id")
|
||||
private Long userId;
|
||||
|
||||
@Schema(name = "pit")
|
||||
private String pit;
|
||||
|
||||
@Schema(name = "robot_id")
|
||||
private Integer robotId;
|
||||
|
||||
@Schema(name = "device_number")
|
||||
private String deviceNumber;
|
||||
|
||||
@Schema(name = "expiration_time")
|
||||
private Date expirationTime;
|
||||
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.baiye.entity.BaseEntity;
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baiye.validation.group.UpdateGroup;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2021-10-28
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableAlias("po")
|
||||
@TableName(value = "tb_pay_order")
|
||||
public class PayOrder extends BaseEntity implements Serializable {
|
||||
private static final long serialVersionUID = 2056458673691527927L;
|
||||
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@Schema(title = "id")
|
||||
@NotNull(message = "id", groups = {UpdateGroup.class})
|
||||
private Long id;
|
||||
|
||||
@Schema(name = "pay_type")
|
||||
private Integer payType;
|
||||
|
||||
@Schema(name = "order_no")
|
||||
private String orderNo;
|
||||
|
||||
|
||||
@Schema(name = "status")
|
||||
private Integer status;
|
||||
|
||||
@Schema(name = "num")
|
||||
private Integer num;
|
||||
|
||||
@Schema(name = "purchaser")
|
||||
private String purchaser;
|
||||
|
||||
@Schema(name = "pay_time")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATETIME_PATTERN, timezone = "GMT+8")
|
||||
private Date payTime;
|
||||
|
||||
@Schema(name = "amount")
|
||||
private BigDecimal amount;
|
||||
|
||||
@Schema(name = "user_id")
|
||||
private Long userId;
|
||||
|
||||
|
||||
@Schema(name = "robot_id")
|
||||
private Integer robotId;
|
||||
|
||||
@Schema(name = "is_renew")
|
||||
private Boolean isRenew;
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import com.baiye.entity.LogicDeletedBaseEntity;
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baiye.validation.group.UpdateGroup;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/26
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@TableAlias("wa")
|
||||
@TableName(value = "tb_wechat_account")
|
||||
public class WeChatAccount extends LogicDeletedBaseEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@Schema(title = "id")
|
||||
@NotNull(message = "微信ID", groups = {UpdateGroup.class})
|
||||
private Long id;
|
||||
|
||||
@Schema(title = "用户id")
|
||||
private Long userId;
|
||||
|
||||
@Schema(title = "设备信息")
|
||||
private String deviceInformation;
|
||||
|
||||
@Schema(title = "用户名称")
|
||||
private String username;
|
||||
|
||||
@Schema(title = "用户id")
|
||||
private String nickname;
|
||||
|
||||
@Schema(title = "城市信息")
|
||||
private String cityInfo;
|
||||
|
||||
@Schema(title = "登录类型")
|
||||
private Integer loginType;
|
||||
|
||||
@Schema(name = "登录时间")
|
||||
private Date loginDate;
|
||||
|
||||
@Schema(name = "头像")
|
||||
private String headerUrl;
|
||||
|
||||
@Schema(name = "微信ID")
|
||||
private String wxId;
|
||||
|
||||
@Schema(name = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(name = "拥有者")
|
||||
private Long ownerId;
|
||||
|
||||
@Schema(title = "在线状态")
|
||||
private Integer status;
|
||||
|
||||
@Schema(title = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(title = "微信号")
|
||||
private String weChatNo;
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Enzo
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Data
|
||||
@TableAlias("we")
|
||||
@TableName("tb_wechat_equipment")
|
||||
@Schema(title = "微信账号设备")
|
||||
public class WeChatEquipment implements Serializable {
|
||||
|
||||
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@Schema(title = "用户id")
|
||||
private Long accountId;
|
||||
|
||||
/**
|
||||
* 角色Code
|
||||
*/
|
||||
@Schema(title = "设备id")
|
||||
private String equipmentId;
|
||||
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/2
|
||||
*/
|
||||
@Data
|
||||
@TableAlias("we")
|
||||
@TableName("tb_wechat_friend")
|
||||
@Schema(title = "微信好友记录")
|
||||
public class WeChatFriedRecord implements Serializable {
|
||||
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
@Schema(title = "机器人微信ID")
|
||||
private String robotWxId;
|
||||
|
||||
@Schema(title = "添加好友方式")
|
||||
private Integer addFriendType;
|
||||
|
||||
@Schema(title = "省")
|
||||
private String province;
|
||||
|
||||
@Schema(title = "城市")
|
||||
private String city;
|
||||
|
||||
@Schema(title = "昵称")
|
||||
private String nickName;
|
||||
|
||||
@Schema(title = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(title = "通过时间")
|
||||
private Long addAcceptTime;
|
||||
|
||||
|
||||
@Schema(title = "微信ID")
|
||||
private String alias;
|
||||
|
||||
@Schema(title = "头像")
|
||||
private String bigHeadImgUrl;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package com.baiye.modules.distribute.mapper;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
|
||||
import com.baiye.modules.distribute.entity.LoginEquipment;
|
||||
import com.baiye.modules.distribute.entity.WeChatAccount;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baiye.modules.distribute.vo.WeChatAddFriendVo;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-4-1
|
||||
*/
|
||||
@Mapper
|
||||
public interface LoginEquipmentMapper extends ExtendMapper<LoginEquipment> {
|
||||
|
||||
|
||||
|
||||
default PageResult<WeChatAccountVO> queryPage(PageParam pageParam, AccountQo qo) {
|
||||
IPage<WeChatAccountVO> page = this.prodPage(pageParam);
|
||||
|
||||
LambdaQueryWrapperX<WeChatAccount> wrapperX = WrappersX.lambdaQueryX(WeChatAccount.class);
|
||||
if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) {
|
||||
wrapperX.between(WeChatAccount::getCreateTime, qo.getStartTime(), qo.getEndTime());
|
||||
}
|
||||
wrapperX.likeIfPresent(WeChatAccount::getUsername, qo.getUsername()).eqIfPresent(WeChatAccount::getUserId, qo.getUserId());
|
||||
this.selectByPage(page, qo.getStartTime(), qo.getEndTime(), qo.getUsername(), qo.getUserId());
|
||||
return new PageResult<>(page.getRecords(), page.getTotal());
|
||||
}
|
||||
|
||||
IPage<WeChatAccountVO> selectByPage(IPage<WeChatAccountVO> page,
|
||||
@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("username") String username,@Param("userId") Long userId);
|
||||
|
||||
|
||||
/**
|
||||
* 天数查询数据
|
||||
*
|
||||
* @param dayNum
|
||||
* @param wxId
|
||||
* @return
|
||||
*/
|
||||
List<WeChatAddFriendVo> queryByDate(@Param("dayNum") Integer dayNum, @Param("wxId") String wxId);
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package com.baiye.modules.distribute.mapper;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
|
||||
import com.baiye.modules.distribute.converter.PayOrderConverter;
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.qo.PayOrderQo;
|
||||
import com.baiye.modules.distribute.vo.PayOrderVO;
|
||||
import com.baiye.notify.converter.UserAnnouncementConverter;
|
||||
import com.baiye.notify.model.entity.UserAnnouncement;
|
||||
import com.baiye.notify.model.vo.UserAnnouncementPageVO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-4-1
|
||||
*/
|
||||
@Mapper
|
||||
public interface PayOrderMapper extends ExtendMapper<PayOrder> {
|
||||
|
||||
|
||||
/**
|
||||
* 订单号查询订单
|
||||
*
|
||||
* @param orderNo
|
||||
* @return
|
||||
*/
|
||||
default List<PayOrder> findByOrderNumber(String orderNo) {
|
||||
LambdaQueryWrapperX<PayOrder> wrapperX = new LambdaQueryWrapperX<>();
|
||||
return this.selectList(wrapperX.eq(PayOrder::getOrderNo, orderNo).orderByDesc(PayOrder::getId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 条件查询分页
|
||||
*
|
||||
* @param pageParam
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
default PageResult<PayOrderVO> queryPage(PageParam pageParam, PayOrderQo qo) {
|
||||
IPage<PayOrder> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<PayOrder> wrapperX = WrappersX.lambdaQueryX(PayOrder.class);
|
||||
if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) {
|
||||
wrapperX.between(PayOrder::getCreateTime, qo.getStartTime(), qo.getEndTime());
|
||||
}
|
||||
wrapperX.eqIfPresent(PayOrder::getOrderNo, qo.getOrderNo()).eqIfPresent(PayOrder::getUserId, qo.getUserId()).orderByDesc(PayOrder::getId);
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<PayOrderVO> voPage = page.convert(PayOrderConverter.INSTANCE::entityToVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package com.baiye.modules.distribute.mapper;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
|
||||
import com.baiye.modules.distribute.converter.WeChatAccountConverter;
|
||||
import com.baiye.modules.distribute.entity.WeChatAccount;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-3-27
|
||||
*/
|
||||
@Mapper
|
||||
public interface WeChatAccountMapper extends ExtendMapper<WeChatAccount> {
|
||||
/**
|
||||
* 微信id查找微信用户
|
||||
*
|
||||
* @param wxId
|
||||
* @return
|
||||
*/
|
||||
default WeChatAccount findByWxId(String wxId) {
|
||||
List<WeChatAccount> selectList = this.selectList(WrappersX.lambdaQueryX(WeChatAccount.class).eqIfPresent
|
||||
(WeChatAccount::getWxId, wxId).eqIfPresent(WeChatAccount::getDeleted, DefaultNumberConstants.ZERO_NUMBER).orderByDesc(WeChatAccount::getId));
|
||||
if (CollUtil.isNotEmpty(selectList)) {
|
||||
return selectList.get(DefaultNumberConstants.ZERO_NUMBER);
|
||||
}
|
||||
return new WeChatAccount();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询数据
|
||||
*
|
||||
* @param pageParam
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
default PageResult<WeChatAccountVO> queryPage(PageParam pageParam, AccountQo qo) {
|
||||
IPage<WeChatAccount> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<WeChatAccount> wrapperX = WrappersX.lambdaQueryX(WeChatAccount.class);
|
||||
if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) {
|
||||
wrapperX.between(WeChatAccount::getCreateTime, qo.getStartTime(), qo.getEndTime());
|
||||
}
|
||||
wrapperX.likeIfPresent(WeChatAccount::getUsername, qo.getUsername()).eqIfPresent(WeChatAccount::getOwnerId, qo.getUserId()).orderByDesc(WeChatAccount::getId);
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<WeChatAccountVO> voPage = page.convert(WeChatAccountConverter.INSTANCE::entityToVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package com.baiye.modules.distribute.mapper;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.modules.distribute.entity.WeChatFriedRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/2
|
||||
*/
|
||||
@Mapper
|
||||
public interface WeChatFriendMapper extends ExtendMapper<WeChatFriedRecord> {
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.baiye.modules.distribute.qo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/29
|
||||
*/
|
||||
@Data
|
||||
public class AccountQo {
|
||||
|
||||
|
||||
@Parameter(description = "开始时间")
|
||||
private String startTime;
|
||||
|
||||
@Parameter(description = "结束时间")
|
||||
private String endTime;
|
||||
|
||||
@Parameter(description = "用户昵称")
|
||||
private String username;
|
||||
|
||||
@Schema(title = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
@Schema(title = "微信id")
|
||||
private Long wxId;
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.baiye.modules.distribute.qo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PayOrderQo {
|
||||
|
||||
@Schema(title = "订单号")
|
||||
private String orderNo;
|
||||
|
||||
@Parameter(description = "开始时间")
|
||||
private String startTime;
|
||||
|
||||
@Parameter(description = "结束时间")
|
||||
private String endTime;
|
||||
|
||||
@Schema(title = "用户ID")
|
||||
private Long userId;
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.distribute.dto.AliPayPcDTO;
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.entity.WeChatAccount;
|
||||
import com.baiye.result.R;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2021/6/16
|
||||
*/
|
||||
public interface AliPayService extends ExtendService<PayOrder> {
|
||||
|
||||
|
||||
/**
|
||||
* pc端创建支付宝订单
|
||||
* @param aliPayPcDTO
|
||||
* @return
|
||||
*/
|
||||
Map<String,Object> aliPayPc(AliPayPcDTO aliPayPcDTO);
|
||||
|
||||
/**
|
||||
* 支付宝订单回调
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
String pcNotifyResponse(HttpServletRequest request);
|
||||
|
||||
/**
|
||||
* 订单编号查询
|
||||
* @param orderNo
|
||||
* @return
|
||||
*/
|
||||
PayOrder findOrderByNo(String orderNo);
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.distribute.entity.LoginEquipment;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.vo.AddFriendVo;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baiye.modules.distribute.vo.WeChatAddFriendVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
public interface LoginEquipmentService extends ExtendService<LoginEquipment> {
|
||||
|
||||
/**
|
||||
* 分页查询数据
|
||||
* @param pageParam
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
|
||||
PageResult<WeChatAccountVO> queryPage(PageParam pageParam, AccountQo qo);
|
||||
|
||||
/**
|
||||
* 设备号查询用户ID
|
||||
* @param pit
|
||||
* @return
|
||||
*/
|
||||
LoginEquipment queryByRobot(String pit);
|
||||
|
||||
|
||||
/**
|
||||
* 时间查询数据
|
||||
* @param dayNum
|
||||
* @param wxId
|
||||
* @return
|
||||
*/
|
||||
List<WeChatAddFriendVo> queryByDate(Integer dayNum, String wxId);
|
||||
|
||||
/**
|
||||
* 机器人查询
|
||||
* @param robotId
|
||||
* @return
|
||||
*/
|
||||
LoginEquipment queryByRobotId(Integer robotId);
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.qo.PayOrderQo;
|
||||
import com.baiye.modules.distribute.vo.PayOrderVO;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/28
|
||||
*/
|
||||
public interface PayOrderService extends ExtendService<PayOrder> {
|
||||
|
||||
/**
|
||||
* 分页查询数据
|
||||
* @param pageParam
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
PageResult<PayOrderVO> queryPage(PageParam pageParam, PayOrderQo qo);
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.distribute.dto.CreateCodeDTO;
|
||||
import com.baiye.modules.distribute.dto.PushCodeDTO;
|
||||
import com.baiye.modules.distribute.dto.WeChatAddFriendDTO;
|
||||
import com.baiye.modules.distribute.dto.WeChatUserLoginDTO;
|
||||
import com.baiye.modules.distribute.entity.WeChatAccount;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.vo.AddFriendVo;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2023/9/5
|
||||
*/
|
||||
public interface WeChatService extends ExtendService<WeChatAccount> {
|
||||
|
||||
|
||||
/**
|
||||
* 创建二维码
|
||||
*
|
||||
* @param createCodeDTO
|
||||
* @return
|
||||
*/
|
||||
String createQrCode(CreateCodeDTO createCodeDTO);
|
||||
|
||||
/**
|
||||
* 添加好友
|
||||
*
|
||||
* @param weChatFriendDTO
|
||||
* @return
|
||||
*/
|
||||
Boolean addFriend(WeChatAddFriendDTO weChatFriendDTO);
|
||||
|
||||
/**
|
||||
* 分页查询账号信息
|
||||
* @param pageParam
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
PageResult<WeChatAccountVO> queryPage(PageParam pageParam, AccountQo qo);
|
||||
|
||||
/**
|
||||
* 创建设备
|
||||
*
|
||||
* @param num
|
||||
* @param packageType
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
Boolean createEquipment(Integer num, Integer packageType, Long userId);
|
||||
|
||||
/**
|
||||
* 弹窗登录
|
||||
* @param pushCodeDTO
|
||||
* @return
|
||||
*/
|
||||
String pushCode(PushCodeDTO pushCodeDTO);
|
||||
|
||||
/**
|
||||
* 全局回调设置
|
||||
* @param callbackUrl
|
||||
* @return
|
||||
*/
|
||||
String globalSetting(String callbackUrl);
|
||||
|
||||
/**
|
||||
* 登录微信账号
|
||||
* @param userLoginDTO
|
||||
* @param status
|
||||
* @return
|
||||
*/
|
||||
Boolean weChatAccountLoginByRespon(WeChatUserLoginDTO userLoginDTO, Integer status);
|
||||
|
||||
|
||||
/**
|
||||
* 分页数据
|
||||
* @param pageParam
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
PageResult<AddFriendVo> queryDateData(PageParam pageParam, AccountQo qo);
|
||||
|
||||
/**
|
||||
*
|
||||
* 设备续费
|
||||
* @param robotId
|
||||
* @param payType
|
||||
* @return
|
||||
*/
|
||||
Boolean equipmentRenewal(Integer robotId, Integer payType);
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
import com.baiye.result.WeChatResponse;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
public interface WechatCallbackService {
|
||||
|
||||
|
||||
/**
|
||||
* 微信回调数据
|
||||
* @param body
|
||||
*/
|
||||
void analyticalData(WeChatResponse body);
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.distribute.dto.WeChatFriendDTO;
|
||||
import com.baiye.modules.distribute.entity.WeChatFriedRecord;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/2
|
||||
*/
|
||||
public interface WechatFriendService extends ExtendService<WeChatFriedRecord> {
|
||||
|
||||
/**
|
||||
* 添加好友
|
||||
* @param weChatFriendDTO
|
||||
*/
|
||||
void addFriendByResponse(WeChatFriendDTO weChatFriendDTO);
|
||||
}
|
@ -0,0 +1,189 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import com.alipay.easysdk.factory.Factory;
|
||||
import com.alipay.easysdk.kernel.util.ResponseChecker;
|
||||
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import com.baiye.constant.PayConstants;
|
||||
import com.baiye.constant.enums.ResponseCode;
|
||||
import com.baiye.exception.BadRequestException;
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.modules.distribute.dto.AliPayPcDTO;
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.mapper.PayOrderMapper;
|
||||
import com.baiye.modules.distribute.service.AliPayService;
|
||||
import com.baiye.modules.distribute.service.WeChatService;
|
||||
import com.baiye.security.util.SecurityUtils;
|
||||
import com.baiye.system.properties.AliPayProperties;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AliPayServiceImpl extends ExtendServiceImpl<PayOrderMapper, PayOrder> implements AliPayService {
|
||||
|
||||
|
||||
@Value("${snowflake.workerId}")
|
||||
private int workerId;
|
||||
|
||||
@Value("${snowflake.datacenterId}")
|
||||
private int datacenterId;
|
||||
|
||||
|
||||
private final AliPayProperties aliPay;
|
||||
|
||||
|
||||
private final WeChatService weChatService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String pcNotifyResponse(HttpServletRequest request) {
|
||||
log.info("================ the pay notify enter date as {} ================", DateUtil.date());
|
||||
//获取支付宝GET过来反馈信息
|
||||
Map<String, String> params = new HashMap<>(DefaultNumberConstants.SIXTEEN_NUMBER);
|
||||
// 处理乱码问题
|
||||
checkParam(request, params);
|
||||
Boolean flag;
|
||||
try {
|
||||
flag = Factory.Payment.Common().verifyNotify(params);
|
||||
//商户订单号
|
||||
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
|
||||
//前台回调验证签名 v1 or v2
|
||||
if (flag != null && flag) {
|
||||
log.info("========== order verify signature success the orderNumber as {} ==========", orderNo);
|
||||
List<PayOrder> orderList = baseMapper.findByOrderNumber(orderNo);
|
||||
if (CollUtil.isNotEmpty(orderList) && orderList.get(DefaultNumberConstants.ZERO_NUMBER).getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
||||
PayOrder order = orderList.get(DefaultNumberConstants.ZERO_NUMBER);
|
||||
log.info("========== the order notify success date as {} ==========", DateUtil.date());
|
||||
order.setPayTime(DateUtil.date());
|
||||
order.setStatus(DefaultNumberConstants.ONE_NUMBER);
|
||||
|
||||
if (Boolean.TRUE.equals(order.getIsRenew())){
|
||||
// 创建设备
|
||||
weChatService.createEquipment(order.getNum(), order.getPayType(), order.getUserId());
|
||||
}
|
||||
if (Boolean.TRUE.equals(order.getIsRenew())){
|
||||
// 设备设备
|
||||
weChatService.equipmentRenewal(order.getRobotId(), order.getPayType());
|
||||
}
|
||||
|
||||
return this.updateById(order) ? ResponseCode.SUCCESS.getDesc() : ResponseCode.FAILURE.getDesc();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("the pc response error time {}", LocalTime.now());
|
||||
throw new BadRequestException(ResponseCode.CALLBACK_FAILED.getDesc());
|
||||
}
|
||||
return ResponseCode.FAILURE.getDesc();
|
||||
}
|
||||
|
||||
|
||||
private void checkParam(HttpServletRequest request, Map<String, String> params) {
|
||||
Map<String, String[]> requestParams = request.getParameterMap();
|
||||
if (CollectionUtils.isNotEmpty(requestParams.keySet())) {
|
||||
for (Map.Entry<String, String[]> stringEntry : requestParams.entrySet()) {
|
||||
String[] values = stringEntry.getValue();
|
||||
String valueStr = CharSequenceUtil.EMPTY;
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + StrPool.COMMA;
|
||||
}
|
||||
/* //乱码解决,这段代码在出现乱码时使用
|
||||
valueStr = new String(valueStr.getBytes
|
||||
(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);*/
|
||||
params.put(stringEntry.getKey(), valueStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> aliPayPc(AliPayPcDTO aliPayPcDTO) {
|
||||
Map<String, Object> map = Maps.newHashMap();
|
||||
BigDecimal amount = new BigDecimal(DefaultNumberConstants.ZERO_NUMBER);
|
||||
Integer num = aliPayPcDTO.getNum();
|
||||
Integer robotId = aliPayPcDTO.getRobotId();
|
||||
Boolean isRenew = aliPayPcDTO.getIsRenew();
|
||||
Integer packageType = aliPayPcDTO.getPackageType();
|
||||
if (packageType == DefaultNumberConstants.ONE_NUMBER) {
|
||||
amount = new BigDecimal(DefaultNumberConstants.THIRTY);
|
||||
}
|
||||
if (packageType == DefaultNumberConstants.TWO_NUMBER) {
|
||||
// 九折
|
||||
amount = NumberUtil.mul(NumberUtil.mul
|
||||
(String.valueOf(DefaultNumberConstants.THIRTY), String.valueOf(DefaultNumberConstants.THREE_NUMBER)), 0.9);
|
||||
}
|
||||
if (packageType == DefaultNumberConstants.THREE_NUMBER) {
|
||||
// 八折
|
||||
amount = NumberUtil.mul(NumberUtil.mul
|
||||
(String.valueOf(DefaultNumberConstants.THIRTY), String.valueOf(DefaultNumberConstants.TWELVE_NUMBER)), 0.8);
|
||||
}
|
||||
// amount = NumberUtil.mul(amount, num);
|
||||
amount = new BigDecimal("0.01");
|
||||
|
||||
// 查询记录
|
||||
try {
|
||||
// 雪花算法id
|
||||
String orderNo = String.valueOf(IdUtil.getSnowflake(workerId, datacenterId).nextId());
|
||||
// 生成返回对象
|
||||
AlipayTradePagePayResponse response = Factory.Payment.Page().pay(PayConstants.PAY_TITLE + orderNo, orderNo, String.valueOf(amount), aliPay.getReturnUrl());
|
||||
if (ResponseChecker.success(response)) {
|
||||
boolean result = savePayOrder(num, isRenew, robotId, packageType, amount, orderNo);
|
||||
log.info("============= the save order result {} =============", result);
|
||||
map.put("payUrl", response.getBody());
|
||||
map.put("orderNo", orderNo);
|
||||
return map;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("the order failed purchaser {} time {}", aliPayPcDTO.getRemark(), LocalTime.now());
|
||||
throw new BadRequestException(ResponseCode.ALI_PAY_ERROR.getDesc());
|
||||
}
|
||||
throw new BadRequestException(ResponseCode.ALI_PAY_ERROR.getDesc());
|
||||
}
|
||||
|
||||
private Boolean savePayOrder(Integer num, Boolean isRenew, Integer robotId, Integer packageType, BigDecimal amount, String orderNo) {
|
||||
PayOrder order = new PayOrder();
|
||||
order.setNum(num);
|
||||
order.setAmount(amount);
|
||||
order.setRobotId(robotId);
|
||||
order.setIsRenew(isRenew);
|
||||
order.setOrderNo(orderNo);
|
||||
order.setPayType(packageType);
|
||||
order.setUserId(SecurityUtils.getCurrentUserId());
|
||||
order.setStatus(DefaultNumberConstants.ZERO_NUMBER);
|
||||
return this.save(order);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PayOrder findOrderByNo(String orderNo) {
|
||||
List<PayOrder> payOrderList = baseMapper.findByOrderNumber(orderNo);
|
||||
if (CollUtil.isNotEmpty(payOrderList)) {
|
||||
return payOrderList.get(DefaultNumberConstants.ZERO_NUMBER);
|
||||
}
|
||||
return new PayOrder();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
|
||||
import com.baiye.modules.distribute.entity.LoginEquipment;
|
||||
import com.baiye.modules.distribute.mapper.LoginEquipmentMapper;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.service.LoginEquipmentService;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baiye.modules.distribute.vo.WeChatAddFriendVo;
|
||||
import com.baiye.security.util.SecurityUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
|
||||
public class LoginEquipmentServiceImpl extends ExtendServiceImpl<LoginEquipmentMapper, LoginEquipment> implements
|
||||
LoginEquipmentService {
|
||||
|
||||
@Override
|
||||
public PageResult<WeChatAccountVO> queryPage(PageParam pageParam, AccountQo qo) {
|
||||
qo.setUserId(SecurityUtils.getCurrentUserId());
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoginEquipment queryByRobot(String pit) {
|
||||
LoginEquipment loginEquipment = baseMapper.selectOne
|
||||
(WrappersX.lambdaQueryX(LoginEquipment.class).eq(LoginEquipment::getPit, pit));
|
||||
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getUserId())) {
|
||||
return loginEquipment;
|
||||
}
|
||||
return new LoginEquipment();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WeChatAddFriendVo> queryByDate(Integer dayNum, String wxId) {
|
||||
return baseMapper.queryByDate(dayNum, wxId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoginEquipment queryByRobotId(Integer robotId) {
|
||||
LoginEquipment loginEquipment = baseMapper.selectOne
|
||||
(WrappersX.lambdaQueryX(LoginEquipment.class).eq(LoginEquipment::getRobotId, robotId));
|
||||
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getUserId())) {
|
||||
return loginEquipment;
|
||||
}
|
||||
return new LoginEquipment();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.modules.distribute.entity.PayOrder;
|
||||
import com.baiye.modules.distribute.mapper.PayOrderMapper;
|
||||
import com.baiye.modules.distribute.qo.PayOrderQo;
|
||||
import com.baiye.modules.distribute.service.PayOrderService;
|
||||
import com.baiye.modules.distribute.vo.PayOrderVO;
|
||||
import com.baiye.security.util.SecurityUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/28
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PayOrderServiceImpl extends ExtendServiceImpl<PayOrderMapper, PayOrder> implements PayOrderService {
|
||||
@Override
|
||||
public PageResult<PayOrderVO> queryPage(PageParam pageParam, PayOrderQo qo) {
|
||||
qo.setUserId(SecurityUtils.getCurrentUserId());
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
}
|
@ -0,0 +1,235 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import com.baiye.constant.ResponseConstant;
|
||||
import com.baiye.constant.WeChatRequestConstants;
|
||||
import com.baiye.constant.WechatCallbackConstant;
|
||||
import com.baiye.constant.enums.ResponseCode;
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.enums.PackageEnum;
|
||||
import com.baiye.exception.BadRequestException;
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.modules.distribute.dto.*;
|
||||
import com.baiye.modules.distribute.entity.LoginEquipment;
|
||||
import com.baiye.modules.distribute.entity.WeChatAccount;
|
||||
import com.baiye.modules.distribute.mapper.WeChatAccountMapper;
|
||||
import com.baiye.modules.distribute.qo.AccountQo;
|
||||
import com.baiye.modules.distribute.service.LoginEquipmentService;
|
||||
import com.baiye.modules.distribute.service.WeChatService;
|
||||
import com.baiye.modules.distribute.vo.AddFriendVo;
|
||||
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
||||
import com.baiye.modules.distribute.vo.WeChatAddFriendVo;
|
||||
import com.baiye.result.WeChatResponse;
|
||||
import com.baiye.security.util.SecurityUtils;
|
||||
import com.baiye.system.properties.WeChatProperties;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-3-27
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, WeChatAccount> implements WeChatService {
|
||||
|
||||
|
||||
private final WeChatProperties weChatProperties;
|
||||
|
||||
private final LoginEquipmentService loginEquipmentService;
|
||||
|
||||
@Override
|
||||
public String createQrCode(CreateCodeDTO createCodeDTO) {
|
||||
Map<String, Object> beanToMap = BeanUtil.beanToMap(createCodeDTO);
|
||||
String getQrCodeResult = HttpUtil.get
|
||||
(weChatProperties.getGatewayHost().concat(WeChatRequestConstants.GET_QR_CODE)
|
||||
.concat(weChatProperties.getAppKey()), beanToMap);
|
||||
if (StringUtils.isNotBlank(getQrCodeResult)) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(getQrCodeResult, WeChatResponse.class);
|
||||
return weChatResponse.getMsg();
|
||||
}
|
||||
throw new BadRequestException("创建失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean addFriend(WeChatAddFriendDTO weChatFriendDTO) {
|
||||
Map<String, Object> map = BeanUtil.beanToMap(weChatFriendDTO);
|
||||
String addedFriendResult = HttpUtil.post(weChatProperties.getGatewayHost().concat
|
||||
(WeChatRequestConstants.WE_CHAT_ADD_FRIEND).concat(weChatProperties.getAppKey()), map);
|
||||
if (addedFriendResult.contains(ResponseCode.SUCCESS.getDesc())) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(addedFriendResult, WeChatResponse.class);
|
||||
if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<WeChatAccountVO> queryPage(PageParam pageParam, AccountQo qo) {
|
||||
qo.setUserId(SecurityUtils.getCurrentUserId());
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean createEquipment(Integer num, Integer packageType, Long userId) {
|
||||
Map<String, Object> map = ImmutableMap.of("num", num);
|
||||
String createEquipmentResult = HttpUtil.get
|
||||
(weChatProperties.getGatewayHost().concat(WeChatRequestConstants.CREATE_EQUIPMENT)
|
||||
.concat(weChatProperties.getAppKey()), map);
|
||||
if (StringUtils.isNotBlank(createEquipmentResult)) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(createEquipmentResult, WeChatResponse.class);
|
||||
if (weChatResponse.getStatus() == ResponseConstant.SUCCESS) {
|
||||
Integer dayNum = PackageEnum.find(packageType);
|
||||
if (dayNum > DefaultNumberConstants.ZERO_NUMBER) {
|
||||
EquipmentDTO dto = BeanUtil.toBean(weChatResponse.getData(), EquipmentDTO.class);
|
||||
DateTime dateTime = DateUtil.offsetDay(DateUtil.date(), dayNum);
|
||||
for (EquipmentDTO.RoBotDTO botDTO : dto.getData()) {
|
||||
// 创建账号
|
||||
LoginEquipment equipment = new LoginEquipment();
|
||||
equipment.setUserId(userId);
|
||||
equipment.setExpirationTime(dateTime);
|
||||
equipment.setRobotId(botDTO.getRobotId());
|
||||
equipment.setDeviceNumber(botDTO.getRobotAccount());
|
||||
loginEquipmentService.save(equipment);
|
||||
}
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String pushCode(PushCodeDTO pushCodeDTO) {
|
||||
Map<String, Object> beanToMap = BeanUtil.beanToMap(pushCodeDTO);
|
||||
String pushQrCodeResult = HttpUtil.get
|
||||
(weChatProperties.getGatewayHost().concat(WeChatRequestConstants.GET_PUSH_LOGIN)
|
||||
.concat(weChatProperties.getAppKey()), beanToMap);
|
||||
if (StringUtils.isNotBlank(pushQrCodeResult)) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(pushQrCodeResult, WeChatResponse.class);
|
||||
return weChatResponse.getMsg();
|
||||
}
|
||||
return CharSequenceUtil.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String globalSetting(String callbackUrl) {
|
||||
List<String> strings = Lists.newArrayList(callbackUrl);
|
||||
Map<String, Object> map = ImmutableMap.of("callbackUrls", strings);
|
||||
String globalSetting = HttpUtil.post
|
||||
(weChatProperties.getGatewayHost().concat
|
||||
(WeChatRequestConstants.GLOBAL_SETTING).concat(weChatProperties.getAppKey()), JSONUtil.toJsonStr(map));
|
||||
if (StringUtils.isNotBlank(globalSetting)) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(globalSetting, WeChatResponse.class);
|
||||
return weChatResponse.getMsg();
|
||||
}
|
||||
return CharSequenceUtil.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean weChatAccountLoginByRespon(WeChatUserLoginDTO userLoginDTO, Integer status) {
|
||||
LoginEquipment loginEquipment = loginEquipmentService.queryByRobot(userLoginDTO.getPit());
|
||||
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getId())) {
|
||||
WeChatAccount byWxId = this.baseMapper.findByWxId(userLoginDTO.getWxId());
|
||||
if (ObjectUtil.isNotNull(byWxId) && ObjectUtil.isNotNull(byWxId.getId())) {
|
||||
byWxId = new WeChatAccount();
|
||||
BeanUtil.copyProperties(userLoginDTO, byWxId);
|
||||
byWxId.setHeaderUrl(userLoginDTO.getBigHeadImgUrl());
|
||||
byWxId.setUserId(loginEquipment.getUserId());
|
||||
return this.save(byWxId);
|
||||
}
|
||||
byWxId.setStatus(status == WechatCallbackConstant.LOGIN_SUCCESS ?
|
||||
DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.MINUS_ONE_NUMBER);
|
||||
return this.updateById(byWxId);
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PageResult<AddFriendVo> queryDateData(PageParam pageParam, AccountQo qo) {
|
||||
qo.setUserId(SecurityUtils.getCurrentUserId());
|
||||
List<AddFriendVo> addFriendVos = Lists.newArrayList();
|
||||
PageResult<WeChatAccountVO> accountVo = baseMapper.queryPage(pageParam, qo);
|
||||
for (WeChatAccountVO vo : accountVo.getRecords()) {
|
||||
AddFriendVo addFriendVo = new AddFriendVo();
|
||||
BeanUtil.copyProperties(vo, addFriendVo);
|
||||
// 查询数据天数据
|
||||
List<WeChatAddFriendVo> weChatAddFriendVos =
|
||||
loginEquipmentService.queryByDate(DefaultNumberConstants.MINUS_FIFTEEN_NUMBER, vo.getWxId());
|
||||
// 转为map
|
||||
Map<String, List<WeChatAddFriendVo>> map = weChatAddFriendVos.stream().collect
|
||||
(Collectors.groupingBy(WeChatAddFriendVo::getDayStr));
|
||||
Integer newFriendsInitiativeNum = DefaultNumberConstants.ZERO_NUMBER;
|
||||
Integer newPassiveNum = DefaultNumberConstants.ZERO_NUMBER;
|
||||
List<AddFriendVo.FriendDTO> newArrayList = Lists.newArrayList();
|
||||
for (int i = 0; i < DefaultNumberConstants.FIFTEEN_NUMBER; i++) {
|
||||
// 时间格式
|
||||
String dateTime = DateUtil.format(DateUtil.offsetDay(DateUtil.date(), -i), DatePattern.NORM_DATE_PATTERN);
|
||||
AddFriendVo.FriendDTO dto = new AddFriendVo.FriendDTO();
|
||||
dto.setDayStr(dateTime);
|
||||
if (map.containsKey(dateTime)) {
|
||||
List<WeChatAddFriendVo> voList = map.get(dateTime);
|
||||
Map<Integer, WeChatAddFriendVo> voMap =
|
||||
voList.stream().collect(Collectors.toMap
|
||||
(WeChatAddFriendVo::getAddFriendType, chatAddFriendVo -> chatAddFriendVo));
|
||||
if (voMap.get(DefaultNumberConstants.ONE_NUMBER) != null) {
|
||||
WeChatAddFriendVo weChatAddFriendVo = voMap.get(DefaultNumberConstants.ONE_NUMBER);
|
||||
Integer num = weChatAddFriendVo.getNum();
|
||||
newFriendsInitiativeNum += num;
|
||||
dto.setNewDayFriendsInitiativeNum(num);
|
||||
}
|
||||
if (voMap.get(DefaultNumberConstants.TWO_NUMBER) != null) {
|
||||
WeChatAddFriendVo weChatAddFriendVo = voMap.get(DefaultNumberConstants.TWO_NUMBER);
|
||||
Integer num = weChatAddFriendVo.getNum();
|
||||
newPassiveNum += num;
|
||||
dto.setNewDayPassiveNum(num);
|
||||
}
|
||||
}
|
||||
newArrayList.add(dto);
|
||||
addFriendVo.setList(newArrayList);
|
||||
}
|
||||
|
||||
addFriendVo.setNewFriendsInitiativeNum(newFriendsInitiativeNum);
|
||||
addFriendVo.setNewPassiveNum(newPassiveNum);
|
||||
addFriendVos.add(addFriendVo);
|
||||
}
|
||||
return new PageResult<>(addFriendVos, accountVo.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean equipmentRenewal(Integer robotId, Integer payType) {
|
||||
// TODO 设备续费
|
||||
Integer dayNum = PackageEnum.find(payType);
|
||||
if (dayNum > DefaultNumberConstants.ZERO_NUMBER) {
|
||||
LoginEquipment loginEquipment = loginEquipmentService.queryByRobotId(robotId);
|
||||
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getId())) {
|
||||
DateTime dateTime = DateUtil.offsetDay(loginEquipment.getExpirationTime(), dayNum);
|
||||
loginEquipment.setExpirationTime(dateTime);
|
||||
return loginEquipmentService.updateById(loginEquipment);
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import com.baiye.constant.WechatCallbackConstant;
|
||||
import com.baiye.modules.distribute.dto.WeChatFriendDTO;
|
||||
import com.baiye.modules.distribute.dto.WeChatUserLoginDTO;
|
||||
import com.baiye.modules.distribute.entity.LoginEquipment;
|
||||
import com.baiye.modules.distribute.service.LoginEquipmentService;
|
||||
import com.baiye.modules.distribute.service.WeChatService;
|
||||
import com.baiye.modules.distribute.service.WechatCallbackService;
|
||||
import com.baiye.modules.distribute.service.WechatFriendService;
|
||||
import com.baiye.notify.event.StationNotifyPushEvent;
|
||||
import com.baiye.notify.model.domain.AnnouncementNotifyInfo;
|
||||
import com.baiye.result.WeChatResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WechatCallbackServiceImpl implements WechatCallbackService {
|
||||
|
||||
|
||||
private final WeChatService weChatService;
|
||||
|
||||
private final ApplicationContext publisher;
|
||||
|
||||
|
||||
private final WechatFriendService wechatFriendService;
|
||||
|
||||
private final LoginEquipmentService loginEquipmentService;
|
||||
|
||||
|
||||
@Override
|
||||
public void analyticalData(WeChatResponse weChatResponse) {
|
||||
Integer status = weChatResponse.getStatus();
|
||||
switch (status) {
|
||||
case WechatCallbackConstant.LOGIN_OUT:
|
||||
case WechatCallbackConstant.LOGIN_SUCCESS:
|
||||
wechatLogin(weChatResponse);
|
||||
break;
|
||||
case WechatCallbackConstant.LOGIN_FAIL:
|
||||
// 登录失败接口
|
||||
break;
|
||||
case WechatCallbackConstant.THROUGH_FRIENDS:
|
||||
viaFriendRequest(weChatResponse);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
private void viaFriendRequest(WeChatResponse weChatResponse) {
|
||||
WeChatFriendDTO weChatFriendDTO =
|
||||
JSONUtil.toBean(JSONUtil.toJsonStr(weChatResponse.getData()), WeChatFriendDTO.class);
|
||||
wechatFriendService.addFriendByResponse(weChatFriendDTO);
|
||||
}
|
||||
|
||||
public void wechatLogin(WeChatResponse weChatResponse) {
|
||||
WeChatUserLoginDTO userLoginDTO =
|
||||
JSONUtil.toBean(JSONUtil.toJsonStr(weChatResponse.getData()), WeChatUserLoginDTO.class);
|
||||
weChatService.weChatAccountLoginByRespon(userLoginDTO, weChatResponse.getStatus());
|
||||
LoginEquipment robot = loginEquipmentService.queryByRobot(userLoginDTO.getPit());
|
||||
AnnouncementNotifyInfo notifyInfo = new AnnouncementNotifyInfo();
|
||||
notifyInfo.setTitle("新消息通知");
|
||||
notifyInfo.setMessageKey(String.valueOf(robot.getId()));
|
||||
notifyInfo.setContent("您有一条新线索请及时查收!");
|
||||
notifyInfo.setCreateTime(LocalDateTime.now());
|
||||
notifyInfo.setMessageType(DefaultNumberConstants.ONE_NUMBER);
|
||||
// 发送消息
|
||||
publisher.publishEvent(new StationNotifyPushEvent(notifyInfo, Collections.singletonList(robot.getUserId())));
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
|
||||
import com.baiye.modules.distribute.dto.WeChatFriendDTO;
|
||||
import com.baiye.modules.distribute.entity.WeChatFriedRecord;
|
||||
import com.baiye.modules.distribute.mapper.WeChatFriendMapper;
|
||||
import com.baiye.modules.distribute.service.WechatFriendService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/28
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WechatFriendServiceImpl extends ExtendServiceImpl<WeChatFriendMapper, WeChatFriedRecord> implements WechatFriendService {
|
||||
|
||||
|
||||
@Override
|
||||
public void addFriendByResponse(WeChatFriendDTO weChatFriendDTO) {
|
||||
List<WeChatFriedRecord> weChatFriedRecords =
|
||||
this.baseMapper.selectList(WrappersX.lambdaQueryX(WeChatFriedRecord.class).eq
|
||||
(WeChatFriedRecord::getRobotWxId, weChatFriendDTO.getRobotWxId()).eq(WeChatFriedRecord::getAlias, weChatFriendDTO.getAlias()));
|
||||
if (CollUtil.isEmpty(weChatFriedRecords)) {
|
||||
WeChatFriedRecord weChatFriedRecord = new WeChatFriedRecord();
|
||||
BeanUtil.copyProperties(weChatFriendDTO,weChatFriedRecord);
|
||||
this.baseMapper.insert(weChatFriedRecord);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.baiye.modules.distribute.vo;
|
||||
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/3
|
||||
*/
|
||||
@Data
|
||||
public class AddFriendVo {
|
||||
|
||||
|
||||
private Integer robotId;
|
||||
|
||||
|
||||
private String robotWxId;
|
||||
|
||||
|
||||
private String robotWxNick;
|
||||
|
||||
private String headerUrl;
|
||||
|
||||
|
||||
private Integer newFriendsInitiativeNum;
|
||||
|
||||
private Integer newPassiveNum;
|
||||
|
||||
private List<FriendDTO> list;
|
||||
|
||||
/**
|
||||
* list
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
@Getter
|
||||
@Setter
|
||||
public static class FriendDTO {
|
||||
|
||||
private String dayStr;
|
||||
|
||||
private Integer newDayFriendsInitiativeNum = DefaultNumberConstants.ZERO_NUMBER;
|
||||
|
||||
private Integer newDayPassiveNum = DefaultNumberConstants.ZERO_NUMBER;
|
||||
}
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package com.baiye.modules.distribute.vo;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class PayOrderVO {
|
||||
|
||||
@Schema(name = "pay_type")
|
||||
private Integer payType;
|
||||
|
||||
@Schema(name = "order_number")
|
||||
private String orderNumber;
|
||||
|
||||
@Schema(name = "status")
|
||||
private Integer status;
|
||||
|
||||
@Schema(name = "purchaser")
|
||||
private String purchaser;
|
||||
|
||||
@Schema(name = "pay_time")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATETIME_PATTERN, timezone = "GMT+8")
|
||||
private Date payTime;
|
||||
|
||||
@Schema(name = "amount")
|
||||
private Double amount;
|
||||
|
||||
@Schema(name = "user_id")
|
||||
private Long userId;
|
||||
|
||||
|
||||
@Schema(title = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(title = "修改时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
package com.baiye.modules.distribute.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/3/26
|
||||
*/
|
||||
@Data
|
||||
public class WeChatAccountVO {
|
||||
|
||||
|
||||
@Schema(title = "用户id")
|
||||
private Long userId;
|
||||
|
||||
|
||||
@Schema(title = "设备信息")
|
||||
private String deviceInformation;
|
||||
|
||||
@Schema(title = "用户名称")
|
||||
private String username;
|
||||
|
||||
@Schema(title = "用户id")
|
||||
private String nickname;
|
||||
|
||||
@Schema(title = "城市信息")
|
||||
private String cityInfo;
|
||||
|
||||
@Schema(title = "登录类型")
|
||||
private Integer loginType;
|
||||
|
||||
@Schema(name = "登录时间")
|
||||
private Date loginDate;
|
||||
|
||||
@Schema(name = "头像")
|
||||
private String headerUrl;
|
||||
|
||||
@Schema(name = "微信ID")
|
||||
private String wxId;
|
||||
|
||||
@Schema(name = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(name = "拥有者")
|
||||
private Long ownerId;
|
||||
|
||||
|
||||
|
||||
@Schema(title = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
|
||||
@Schema(title = "修改时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@Schema(title = "在线状态")
|
||||
private Integer status;
|
||||
|
||||
|
||||
@Schema(title = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(title = "微信号")
|
||||
private String weChatNo;
|
||||
|
||||
@Schema(title = "设备号")
|
||||
private Integer robotId;
|
||||
|
||||
private String deviceNumber;
|
||||
|
||||
@Schema(title = "过期时间")
|
||||
private LocalDateTime expirationTime;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.baiye.modules.distribute.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/3
|
||||
*/
|
||||
@Data
|
||||
public class WeChatAddFriendVo {
|
||||
|
||||
private String dayStr;
|
||||
|
||||
private Integer num;
|
||||
|
||||
private Integer addFriendType;
|
||||
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.baiye.modules.distribute.mapper.LoginEquipmentMapper">
|
||||
<sql id="Base_Alias_Column_List">
|
||||
wa.username,
|
||||
wa.nickname,
|
||||
wa.city_info,
|
||||
wa.login_type,
|
||||
wa.header_url,
|
||||
wa.wx_id,
|
||||
wa.sex,
|
||||
wa.status,
|
||||
wa.we_chat_no,
|
||||
wa.remark,
|
||||
wa.create_time,
|
||||
wa.update_time,
|
||||
le.robot_id,
|
||||
le.device_number,
|
||||
le.expiration_time
|
||||
</sql>
|
||||
|
||||
<select id="selectByPage" resultType="com.baiye.modules.distribute.vo.WeChatAccountVO">
|
||||
SELECT
|
||||
<include refid="Base_Alias_Column_List"/>
|
||||
FROM
|
||||
tb_login_equipment le left join
|
||||
tb_wechat_equipment we on we.equipment_id = le.id
|
||||
LEFT join tb_wechat_account wa on wa.id = we.account_id
|
||||
|
||||
where le.user_id = #{userId}
|
||||
<if test="username != null">
|
||||
AND wa.username LIKE concat('%',#{username,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
and wa.create_time >= #{startTime,jdbcType=TIMESTAMP}
|
||||
</if>
|
||||
|
||||
<if test="endTime != null">
|
||||
and wa.create_time <= #{endTime,jdbcType=TIMESTAMP}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="queryByDate" resultType="com.baiye.modules.distribute.vo.WeChatAddFriendVo">
|
||||
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') dayStr
|
||||
, count(1) as num
|
||||
, add_friend_type
|
||||
FROM tb_wechat_friend
|
||||
WHERE DATE_SUB(CURDATE(), INTERVAL #{dayNum} DAY) <= date (create_time) and robot_wx_id = #{wxId}
|
||||
GROUP BY dayStr, add_friend_type
|
||||
ORDER BY dayStr
|
||||
</select>
|
||||
</mapper>
|
@ -0,0 +1,46 @@
|
||||
package com.baiye.constant;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
|
||||
@Getter
|
||||
public class WechatCallbackConstant {
|
||||
private WechatCallbackConstant() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫码返回
|
||||
*/
|
||||
public static final int SCAN_CODE = 222;
|
||||
|
||||
|
||||
/**
|
||||
* 登录成功
|
||||
*/
|
||||
public static final int LOGIN_SUCCESS = 201;
|
||||
|
||||
|
||||
/**
|
||||
* 登录失败
|
||||
*/
|
||||
public static final int LOGIN_FAIL = 212;
|
||||
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*/
|
||||
public static final int LOGIN_OUT = 210;
|
||||
|
||||
|
||||
/**
|
||||
* 通过好友
|
||||
*/
|
||||
public static final int THROUGH_FRIENDS = 1003;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,225 @@
|
||||
package com.baiye.constant.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author q
|
||||
*/
|
||||
@Getter
|
||||
public enum ResponseCode {
|
||||
|
||||
/**
|
||||
* 成功
|
||||
*/
|
||||
SUCCESS("1", "success"),
|
||||
|
||||
/**
|
||||
* 失败
|
||||
*/
|
||||
FAILURE("0", "failure "),
|
||||
|
||||
/**
|
||||
* 充值成功
|
||||
*/
|
||||
RECHARGE_SUCCESS("1020", "充值成功"),
|
||||
|
||||
/**
|
||||
* 手机号码不正确
|
||||
*/
|
||||
PHONE_NUMBER_IS_INCORRECT("1022", "手机号码不正确"),
|
||||
|
||||
/**
|
||||
* 验证码错误
|
||||
*/
|
||||
VERIFICATION_CODE_PARAMETER_ERROR("1023", "验证码错误"),
|
||||
|
||||
/**
|
||||
* 验证码不存在或已过期
|
||||
*/
|
||||
VERIFICATION_NOT_EXIST_HAS_EXPIRED("1024", "验证码不存在或已过期"),
|
||||
|
||||
/**
|
||||
* 读取文件失败
|
||||
*/
|
||||
READ_FILE_ERROR("1021", "读取文件失败"),
|
||||
/**
|
||||
* 参数错误
|
||||
*/
|
||||
PARAMETER_ERROR("1001", "参数错误"),
|
||||
|
||||
/**
|
||||
* 用户信息错误
|
||||
*/
|
||||
USER_INFORMATION_ERROR("1002", "用户信息错误"),
|
||||
|
||||
/**
|
||||
* 账户已被禁用
|
||||
*/
|
||||
ACCOUNT_DISABLED("1025", "账户已被禁用"),
|
||||
|
||||
/**
|
||||
* 套餐不存在或已过期
|
||||
*/
|
||||
PACKAGE_ERROR("1026", "套餐不存在或已过期"),
|
||||
|
||||
/**
|
||||
* 支付宝支付失败
|
||||
*/
|
||||
ALI_PAY_ERROR("1016", "支付宝支付失败"),
|
||||
|
||||
/**
|
||||
* 支付宝支付回调失败
|
||||
*/
|
||||
CALLBACK_FAILED("1017", "支付宝支付回调失败"),
|
||||
|
||||
/**
|
||||
* 账号已过期
|
||||
*/
|
||||
ACCOUNT_EXPIRED("1020", "账号已过期,无法激活"),
|
||||
/**
|
||||
* 呼叫失败
|
||||
*/
|
||||
CALL_ERROR("1014", "呼叫失败"),
|
||||
|
||||
/**
|
||||
* axb参数配置
|
||||
*/
|
||||
AXB_CONFIGURATION_ERROR("1015", "axb参数配置错误"),
|
||||
|
||||
|
||||
/**
|
||||
* 数据解析失败
|
||||
*/
|
||||
DECRYPTION_FAILED("1012", "数据解析失败"),
|
||||
|
||||
/**
|
||||
* 比率不足100%,无法分配
|
||||
*/
|
||||
RATIO_FAILED("1013", "比率不足100%,无法分配"),
|
||||
|
||||
|
||||
/**
|
||||
* axb参数配置
|
||||
*/
|
||||
WRONG_USER_NAME_PASSWORD("1016", "用户名或密码不正确"),
|
||||
|
||||
/**
|
||||
* 账户余额不足
|
||||
*/
|
||||
INSUFFICIENT_ACCOUNT_BALANCE("1019", "账户余额不足"),
|
||||
|
||||
/**
|
||||
* 连接成功
|
||||
*/
|
||||
CONNECTION_SUCCEEDED("1027", "连接成功"),
|
||||
|
||||
/**
|
||||
* 获取二维码失败
|
||||
*/
|
||||
FAILED_GET_QR_CODE("1028", "获取二维码失败"),
|
||||
|
||||
/**
|
||||
* 获取模板失败
|
||||
*/
|
||||
FAILED_GET_TEMPLATE("1029", "获取模板失败,请先配置发送模板"),
|
||||
|
||||
/**
|
||||
* 发送消息至少配置一条
|
||||
*/
|
||||
TEMPLATE_CHANGE_ERROR("1031", "发送消息至少配置一条!"),
|
||||
|
||||
/**
|
||||
* 添加好友失败
|
||||
*/
|
||||
FAILED_ADD_FRIEND("1032", "添加好友失败!"),
|
||||
|
||||
/**
|
||||
* 当前账户未登录或不在线
|
||||
*/
|
||||
ACCOUNT_NOT_LOGGED_OR_NOT_ONLINE("1030", "当前账户未登录或不在线"),
|
||||
|
||||
/**
|
||||
* 修改套餐失败
|
||||
*/
|
||||
UPDATE_COMBO_FRIEND("1033", "修改套餐失败!"),
|
||||
|
||||
/**
|
||||
* 发送邮件失败
|
||||
*/
|
||||
SEND_MAIL_FRIEND("1034", "发送邮件失败!"),
|
||||
|
||||
/**
|
||||
* 发送邮件失败
|
||||
*/
|
||||
SEND_MAIL_NUM_FRIEND("1035", "发送数量不足100!"),
|
||||
|
||||
/**
|
||||
* 用户被禁11005用
|
||||
*/
|
||||
USER_DISABLED("11004", "用户被禁用"),
|
||||
/**
|
||||
* 用户被锁定
|
||||
*/
|
||||
USER_LOCKED("11005", "用户被锁定"),
|
||||
/**
|
||||
* 用户名或密码错误
|
||||
*/
|
||||
USER_PASSWORD_ERROR("11006", "用户名或密码错误"),
|
||||
/**
|
||||
* 用户密码过期
|
||||
*/
|
||||
USER_PASSWORD_EXPIRED("11007", "用户密码过期"),
|
||||
/**
|
||||
* 用户账号过期
|
||||
*/
|
||||
USER_ACCOUNT_EXPIRED("11008", "用户账号已过期"),
|
||||
/**
|
||||
* 没有该用户
|
||||
*/
|
||||
USER_NOT_EXIST("11009", "没有该用户"),
|
||||
/**
|
||||
* 用户登录失败
|
||||
*/
|
||||
USER_LOGIN_FAIL("11010", "用户登录失败"),
|
||||
/**
|
||||
* 验证码错误
|
||||
*/
|
||||
VERIFY_CODE_ERROR("11011", "验证码错误"),
|
||||
|
||||
/**
|
||||
* 修改用户信息失败
|
||||
*/
|
||||
UPDATE_USER_ERROR("11012", "修改用户信息失败"),
|
||||
|
||||
/**
|
||||
* 兑换数据失败
|
||||
*/
|
||||
DATA_CONVERSION_FAILURE("11013", "兑换数据失败,请再次重试"),
|
||||
|
||||
/**
|
||||
* 发送邮件失败
|
||||
*/
|
||||
SEND_MAIL_MAX_NUM_FRIEND("1036", "发送数量超出最大范围!"),
|
||||
|
||||
/**
|
||||
* 该批次号已经存在
|
||||
*/
|
||||
BATCH_NUMBER_ALREADY_EXISTS("1037", "该批次号已经存在!"),
|
||||
|
||||
/**
|
||||
* 非超级管理员不能修改数据
|
||||
*/
|
||||
NON_SUPER_ADMINISTRATORS_CANNOT_MODIFY_DATA("1018", "非管理员不能修改数据");
|
||||
|
||||
|
||||
private final String code;
|
||||
|
||||
private final String desc;
|
||||
|
||||
ResponseCode(String code, String desc) {
|
||||
this.code = code;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
/*
|
||||
* 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.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 验证码业务场景对应的 Redis 中的 key
|
||||
* </p>
|
||||
*
|
||||
* @author Zheng Jie
|
||||
* @date 2020-05-02
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ClueSourceEnum {
|
||||
|
||||
/**
|
||||
* 表单上传
|
||||
*/
|
||||
TABLE_UPLOAD("table upload", "表单上传"),
|
||||
|
||||
/**
|
||||
* 门店分发
|
||||
*/
|
||||
STORE_DISTRIBUTION("store distribution:", "门店分发");
|
||||
|
||||
|
||||
private final String key;
|
||||
private final String description;
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package com.baiye.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2023/5/16
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum MailRequestEnum {
|
||||
|
||||
/**
|
||||
* 手动发送
|
||||
*/
|
||||
MM("MM", "dmp::manual::"),
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
GG("GG", "mail::gender::"),
|
||||
|
||||
|
||||
/**
|
||||
* 定时
|
||||
*/
|
||||
BY("BY", "dmp::request::");
|
||||
|
||||
|
||||
private final String type;
|
||||
|
||||
private final String cacheName;
|
||||
|
||||
public static MailRequestEnum find(String str) {
|
||||
for (MailRequestEnum dataScopeEnum : MailRequestEnum.values()) {
|
||||
if (dataScopeEnum.getCacheName().equalsIgnoreCase(str)) {
|
||||
return dataScopeEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.baiye.enums;
|
||||
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/1
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum PackageEnum {
|
||||
/**
|
||||
* 月度
|
||||
*/
|
||||
MONTH(1, 30),
|
||||
|
||||
/**
|
||||
* 季度
|
||||
*/
|
||||
QUARTER(2, 90),
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
YEAR(3, 365);
|
||||
|
||||
|
||||
private final Integer type;
|
||||
private final Integer num;
|
||||
|
||||
public static Integer find(Integer val) {
|
||||
for (PackageEnum packageEnum : PackageEnum.values()) {
|
||||
if (Objects.equals(packageEnum.getType(), val)) {
|
||||
return packageEnum.getNum();
|
||||
}
|
||||
}
|
||||
return DefaultNumberConstants.MINUS_ONE_NUMBER;
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.baiye.result;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/6/23
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
public class WeChatResponse<T extends Serializable> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6763956796736587193L;
|
||||
|
||||
private T data;
|
||||
|
||||
private String msg;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private Boolean success;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.baiye.system.properties;
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
*/
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "alipay")
|
||||
public class AliPayProperties {
|
||||
|
||||
private String protocol;
|
||||
|
||||
private String gatewayHost;
|
||||
|
||||
private String signType;
|
||||
|
||||
private String appId;
|
||||
|
||||
private String merchantPrivateKey;
|
||||
|
||||
private String aliPayPublicKey;
|
||||
|
||||
private String notifyUrl;
|
||||
|
||||
private String encryptKey;
|
||||
|
||||
private String returnUrl;
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.baiye.system.properties;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/6/24
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "wechat")
|
||||
public class WeChatProperties {
|
||||
|
||||
private String gatewayHost;
|
||||
|
||||
|
||||
private String appKey;
|
||||
|
||||
}
|
Loading…
Reference in New Issue