Merge branch 'master' into cc_20251029_smz

This commit is contained in:
wangff
2025-11-10 10:42:07 +08:00
69 changed files with 3140 additions and 16 deletions

View File

@@ -56,4 +56,7 @@ public class StoreDTO {
private String managerSupervisionName;
@ApiModelProperty("所属大区/分部")
private String branchName;
@ApiModelProperty("门店状态")
private String status;
}

View File

@@ -0,0 +1,20 @@
package com.cool.store.dto.huoma;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/6 11:09
* @Version 1.0
*/
@Data
public class AccountTagDTO {
@ApiModelProperty("门店编码")
private String storeNum;
@ApiModelProperty("设备名称")
private String deviceName;
}

View File

@@ -0,0 +1,39 @@
package com.cool.store.dto.huoma;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <p>
* 火码账号DTO
* </p>
*
* @author wangff
* @since 2025/9/23
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HuoMaAccountDTO {
/**
* 账号
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 是否已查询
*/
private Boolean isQuery;
public HuoMaAccountDTO(String account, String password) {
this.account = account;
this.password = password;
this.isQuery = false;
}
}

View File

@@ -0,0 +1,40 @@
package com.cool.store.dto.huoma;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2025/11/5 14:43
* @Version 1.0
*/
@Data
public class ProgramReqDTO {
@ApiModelProperty(name = "门店编码",required = true)
private String storeCode;
@ApiModelProperty(name = "设备名称",required = true)
@NotEmpty(message = "设备名称不能为空")
private String deviceName;
@ApiModelProperty(name = "第几页,",required = true)
private Integer index;
@ApiModelProperty(name ="每页数量",required = true)
private Integer size;
@ApiModelProperty(name = "时间",hidden = true)
private String date;
@ApiModelProperty(name = "排序",hidden = true)
private String sort;
@ApiModelProperty("标签id列表")
private List<Integer> tagIds;
}

View File

@@ -0,0 +1,25 @@
package com.cool.store.dto.huoma;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/5 14:44
* @Version 1.0
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProgramResponseDTO {
@ApiModelProperty("节目ID")
private Long id;
@ApiModelProperty("节目名称")
private String name;
@ApiModelProperty("节目缩略图")
private String thumbnail;
}

View File

@@ -0,0 +1,27 @@
package com.cool.store.dto.huoma;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2025/11/5 17:06
* @Version 1.0
*/
@Data
public class PublishDTO {
@ApiModelProperty(name = "门店编号",required = true)
@NotEmpty(message = "门店编码不能为空")
private String storeCode;
@ApiModelProperty(name = "设备ID列表",required = true)
@NotEmpty(message = "设备ID列表不能为空")
@JSONField(name = "terminals")
private List<String> deviceIdList;
@ApiModelProperty("节目id")
private Long programId;
}

View File

@@ -0,0 +1,59 @@
package com.cool.store.dto.huoma;
import com.cool.store.utils.BrowserVersionUtils;
import lombok.Data;
import java.util.Objects;
/**
* @Author: WangShuo
* @Date: 2025/08/13/16:24
* @Version 1.0
* @注释:
*/
@Data
public class StoreEquipmentDTO {
/**
* 已授权登录数
*/
private Integer activeCount;
/**
* 总设备
*/
private Integer terminalCount;
/**
* 网点ID
*/
private Integer pointId;
/**
* 网点号
*/
private String pointCode;
/**
* 签到数
*/
private Integer signCount;
/**
* 在线
*/
private Integer connectCount;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StoreEquipmentDTO that = (StoreEquipmentDTO) o;
return Objects.equals(pointCode, that.pointCode);
}
@Override
public int hashCode() {
return Objects.hashCode(pointCode);
}
}

View File

@@ -0,0 +1,40 @@
package com.cool.store.dto.huoma;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/8/18 16:00
* @Version 1.0
*/
@Data
public class StoreRequestDTO {
private String reportCode;
private Integer index;
private Integer size;
private Params params;
public StoreRequestDTO(String reportCode, Integer index, Integer size, String shopCode) {
this.reportCode = reportCode;
this.index = index;
this.size = size;
this.params = new Params(shopCode);
}
@Data
static class Params{
private String inputText_2;
public Params(String inputText_2) {
this.inputText_2 = inputText_2;
}
}
}

View File

@@ -0,0 +1,24 @@
package com.cool.store.dto.huoma;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/8/18 16:38
* @Version 1.0
*/
@Data
public class StoreXinFaDetailRequestDTO {
private Integer index;
private Integer size;
private Integer pointId;
public StoreXinFaDetailRequestDTO(Integer index, Integer size, Integer pointId) {
this.index = index;
this.size = size;
this.pointId = pointId;
}
}

View File

@@ -0,0 +1,81 @@
package com.cool.store.dto.huoma;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.cool.store.utils.BrowserVersionUtils;
import com.cool.store.utils.StringUtil;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.lang.reflect.Type;
/**
* @Author suzhuhong
* @Date 2025/8/18 16:27
* @Version 1.0
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class StoreXinFaDeviceDetail {
/**
* 设备ID
*/
@ApiModelProperty(value = "设备ID")
private String id;
@ApiModelProperty("设备id")
private String deviceId;
/**
* 设备名称
*/
@ApiModelProperty(value = "设备名称")
private String name;
/**
* 设备连接状态 0:未连接 1:已连接
*/
@ApiModelProperty(value = "设备连接状态 false:未连接 true:已连接")
private Boolean isConnect;
/**
* 设备总内存
*/
@ApiModelProperty(value = "设备总内存")
private String totalRam;
/**
* 设备可用内存
*/
@ApiModelProperty(value = "设备可用内存")
private String availRam;
/**
* 设备浏览器信息
*/
@ApiModelProperty(value = "设备浏览器信息")
private String userAgent;
/**
* 内用内存小于300M 或者 浏览器版本小于60
*/
@ApiModelProperty(value = "内用内存小于300M 或者 浏览器版本小于60")
private Boolean flag;
public boolean getFlag() {
if (StringUtil.isEmpty(availRam)||StringUtil.isEmpty(userAgent)){
return false;
}
try {
Boolean isOldChromeBrowser = BrowserVersionUtils.isOldChromeBrowser(userAgent);
long availableMemoryMB = Long.parseLong(availRam) / (1024 * 1024);
return availableMemoryMB < 300 || isOldChromeBrowser;
} catch (NumberFormatException e) {
return false;
}
}
}

View File

@@ -0,0 +1,29 @@
package com.cool.store.dto.huoma;
import io.swagger.models.auth.In;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/5 9:33
* @Version 1.0
*/
@Data
public class TagDTO {
private String channelType;
private Integer index;
private Integer size;
private String type;
public TagDTO(String channelType, Integer index, Integer size, String type) {
this.channelType = channelType;
this.index = index;
this.size = size;
this.type = type;
}
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.dto.huoma;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/5 9:41
* @Version 1.0
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class TagDetailDTO {
@ApiModelProperty("标签Id")
private Integer id;
@ApiModelProperty("标签名称")
private String name;
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.dto.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 服务包菜品数据
* </p>
*
* @author wangff
* @since 2025/10/30
*/
@Data
public class LaunchDataDTO {
@ApiModelProperty("名称")
private String spName;
@ApiModelProperty("上新时间yyyy-MM-dd")
private String upSaleDate;
}

View File

@@ -0,0 +1,34 @@
package com.cool.store.dto.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 菜品上新DTO
* </p>
*
* @author wangff
* @since 2025/11/3
*/
@Data
public class RecipeLaunchDTO {
@ApiModelProperty("商品编码")
private String goodsCode;
@ApiModelProperty("商品图片")
private String goodsImageUrl;
@ApiModelProperty("商品名称")
private String goodsName;
@ApiModelProperty("上新时间")
private String launchTime;
@ApiModelProperty("单日最高销量")
private Integer maxQty;
@ApiModelProperty("销量总计")
private Integer sumQty;
}

View File

@@ -0,0 +1,23 @@
package com.cool.store.dto.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* <p>
* 服务包菜品上新DTO
* </p>
*
* @author wangff
* @since 2025/11/3
*/
@Data
public class RecipeSpLaunchDTO {
@ApiModelProperty("菜品上新记录")
private List<RecipeLaunchDTO> recipeRecordList;
@ApiModelProperty("服务包执行记录")
private List<ServicePackageExecuteDTO> spRecordList;
}

View File

@@ -0,0 +1,38 @@
package com.cool.store.dto.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 营收数据
* </p>
*
* @author wangff
* @since 2025/10/30
*/
@Data
public class RevenueDataDTO {
@ApiModelProperty("门店编码")
private String storeCode;
@ApiModelProperty("营业额")
private BigDecimal amt;
@ApiModelProperty("实收")
private BigDecimal receivedAmt;
@ApiModelProperty("营业时间yyyy-MM-dd")
private String businessDate;
@ApiModelProperty("服务包列表")
private List<LaunchDataDTO> otherLaunchDates;
@ApiModelProperty("菜品列表")
private List<LaunchDataDTO> otherRecipeLaunchDates;
}

View File

@@ -0,0 +1,28 @@
package com.cool.store.dto.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <p>
* 营收数据查询DTO
* </p>
*
* @author wangff
* @since 2025/10/30
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RevenueDataQueryDTO {
@ApiModelProperty("门店编码")
private String storeCode;
@ApiModelProperty("业务时间开始")
private String businessDateFrom;
@ApiModelProperty("业务时间结束")
private String businessDateTo;
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.dto.recipe;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 服务包执行DTO
* </p>
*
* @author wangff
* @since 2025/11/3
*/
@Data
public class ServicePackageExecuteDTO {
@ApiModelProperty("服务包执行时间")
private String executeTime;
@ApiModelProperty("服务包图片")
private String spImage;
@ApiModelProperty("服务包名称")
private String spName;
@ApiModelProperty("服务包id")
@JsonSerialize(using = ToStringSerializer.class)
private Long spId;
}

View File

@@ -0,0 +1,17 @@
package com.cool.store.dto.wechat;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/10/10 15:01
* @Version 1.0
*/
@Data
public class AccessTokenDTO {
private String access_token;
private Integer expires_in;
}

View File

@@ -0,0 +1,26 @@
package com.cool.store.dto.wechat;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/10/14 14:39
* @Version 1.0
*/
@Data
public class CallbackMessageDTO {
private String toUserName;
private String fromUserName;
private Long createTime;
private String msgType;
private String event;
private String eventKey;
}

View File

@@ -0,0 +1,23 @@
package com.cool.store.dto.wechat;
import lombok.Data;
import java.util.Date;
/**
* @Author suzhuhong
* @Date 2025/10/16 14:13
* @Version 1.0
*/
@Data
public class ServiceAccountOpenIdDTO {
private String partnerId;
private String unionId;
private String serviceAccountOpenId;
private Date lastUpdateTime;
}

View File

@@ -0,0 +1,90 @@
package com.cool.store.dto.wechat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author suzhuhong
* @Date 2025/10/10 14:36
* @Version 1.0
*/
@Data
public class WechatTemplateMessageDTO {
/**
* 接收者openid
*/
@JsonProperty("touser")
private String toUser;
/**
* 模板ID
*/
@JsonProperty("template_id")
private String templateId;
/**
* 模板跳转链接(非必须)
*/
private String url;
/**
* 跳小程序所需数据,不需跳小程序可不用传该数据
*/
private MiniprogramDTO miniprogram;
/**
* 模板数据
*/
private Map<String, TemplateDataItemDTO> data;
/**
* 小程序跳转DTO
*/
@Data
public static class MiniprogramDTO {
/**
* 所需跳转到的小程序appid
*/
private String appid;
/**
* 所需跳转到小程序的具体页面路径,支持带参数
*/
private String pagepath;
}
/**
* 模板数据项DTO
*/
@Data
public static class TemplateDataItemDTO {
/**
* 模板内容
*/
private String value;
/**
* 模板内容字体颜色,不填默认为黑色
*/
private String color;
public TemplateDataItemDTO() {
}
public TemplateDataItemDTO(String value) {
this.value = value;
this.color = "#333333";
}
public TemplateDataItemDTO(String value, String color) {
this.value = value;
this.color = color;
}
}
}

View File

@@ -0,0 +1,115 @@
package com.cool.store.dto.wechat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2025/10/15 9:56
* @Version 1.0
*/
@Data
public class WechatUserInfoDTO {
/**
* 用户是否订阅该公众号标识
* 0代表未关注1代表关注
*/
private Integer subscribe;
/**
* 用户的标识,对当前公众号唯一
*/
private String openid;
/**
* 用户的昵称
*/
private String nickname;
/**
* 用户的性别
* 1为男性2为女性0为未知
*/
private Integer sex;
/**
* 用户所在城市
*/
private String city;
/**
* 用户所在国家
*/
private String country;
/**
* 用户所在省份
*/
private String province;
/**
* 用户的语言
* 简体中文为zh_CN
*/
private String language;
/**
* 用户头像
*/
private String headimgurl;
/**
* 用户关注时间,为时间戳
*/
@JsonProperty("subscribe_time")
private Long subscribeTime;
/**
* 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段
*/
private String unionid;
/**
* 公众号运营者对粉丝的备注
*/
private String remark;
/**
* 用户所在的分组ID兼容旧的用户分组接口
*/
private Integer groupid;
/**
* 用户被打上的标签ID列表
*/
@JsonProperty("tagid_list")
private List<Integer> tagidList;
/**
* 返回用户关注的渠道来源
*/
@JsonProperty("subscribe_scene")
private String subscribeScene;
/**
* 二维码扫码场景(开发者自定义)
*/
@JsonProperty("qr_scene")
private Long qrScene;
/**
* 二维码扫码场景描述(开发者自定义)
*/
@JsonProperty("qr_scene_str")
private String qrSceneStr;
/**
* 是否已关注
*/
public boolean isSubscribed() {
return subscribe != null && subscribe == 1;
}
}

View File

@@ -1,13 +1,19 @@
package com.cool.store.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Date;
@Data
@Table(name = "xfsg_old_shop")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class OldShopDO {
/**

View File

@@ -36,6 +36,10 @@ public class PartnerUserWechatBindDO implements Serializable {
*/
private String partnerId;
private String unionId;
private String serviceAccountOpenId;
/**
* 创建时间
*/

View File

@@ -0,0 +1,29 @@
package com.cool.store.request.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* <p>
* 营收数据Request
* </p>
*
* @author wangff
* @since 2025/10/30
*/
@Data
public class RevenueDataRequest {
@ApiModelProperty("门店id")
@NotBlank(message = "门店id不能为空")
private String storeId;
@ApiModelProperty("业务时间开始yyyy-MM-dd")
@NotBlank(message = "业务时间开始不能为空")
private String businessDateFrom;
@ApiModelProperty("业务时间结束yyyy-MM-dd")
@NotBlank(message = "业务时间结束不能为空")
private String businessDateTo;
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.vo.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 服务包菜品数据
* </p>
*
* @author wangff
* @since 2025/10/30
*/
@Data
public class LaunchDataVO {
@ApiModelProperty("名称")
private String spName;
@ApiModelProperty("上新时间yyyy-MM-dd")
private String upSaleDate;
}

View File

@@ -0,0 +1,38 @@
package com.cool.store.vo.recipe;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 营收数据VO
* </p>
*
* @author wangff
* @since 2025/10/30
*/
@Data
public class RevenueDataVO {
@ApiModelProperty("门店编码")
private String storeNum;
@ApiModelProperty("营业额")
private BigDecimal amt;
@ApiModelProperty("实收")
private BigDecimal receivedAmt;
@ApiModelProperty("营业时间yyyy-MM-dd")
private String businessDate;
@ApiModelProperty("服务包列表")
private List<LaunchDataVO> otherLaunchDates;
@ApiModelProperty("菜品列表")
private List<LaunchDataVO> otherRecipeLaunchDates;
}