diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopMsgPushController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopMsgPushController.java index b1a767f6..fe6d5d2d 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopMsgPushController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopMsgPushController.java @@ -1,8 +1,20 @@ package com.czg.controller.admin; +import com.czg.account.dto.msg.ShopMsgEditDTO; +import com.czg.account.dto.msg.ShopPushOpenIdEditDTO; +import com.czg.account.entity.ShopPushOpenId; +import com.czg.account.service.ShopMsgStateService; +import com.czg.account.service.ShopPushOpenIdService; +import com.czg.annotation.SaAdminCheckPermission; import com.czg.resp.CzgResult; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.czg.sa.StpKit; +import com.mybatisflex.core.query.QueryWrapper; +import jakarta.annotation.Resource; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 店铺消息推送相关 @@ -11,4 +23,71 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/admin/shopMsgPush") public class ShopMsgPushController { + @Resource + private ShopMsgStateService shopMsgStateService; + @Resource + private ShopPushOpenIdService shopPushOpenIdService; + + /** + * 店铺推送状态获取 + */ + @SaAdminCheckPermission("shopMsgPush:state:list") + @GetMapping("/shopState") + public CzgResult get() { + return CzgResult.success(shopMsgStateService.getState(StpKit.USER.getShopId())); + } + + /** + * 店铺推送状态修改 + * @param shopMsgEditDTO 修改嘻嘻你 + * @return 是否成功 + */ + @SaAdminCheckPermission("shopMsgPush:state:edit") + @PutMapping("/shopState") + public CzgResult edit(@RequestBody @Validated ShopMsgEditDTO shopMsgEditDTO) { + return CzgResult.success(shopMsgStateService.edit(StpKit.USER.getShopId(), shopMsgEditDTO)); + } + + /** + * 订阅用户列表 + * @return 分页数据 + */ + @SaAdminCheckPermission("shopMsgPush:list") + @GetMapping + public CzgResult> allInfo() { + return CzgResult.success(shopPushOpenIdService.pageInfo(StpKit.USER.getShopId())); + } + + /** + * 订阅解绑 + * @param openId 唯一推送标识 + * @return 是否成功 + */ + @SaAdminCheckPermission("shopMsgPush:del") + @DeleteMapping + public CzgResult unbind(@RequestParam String openId) { + return CzgResult.success(shopPushOpenIdService.remove(new QueryWrapper().eq(ShopPushOpenId::getShopId, StpKit.USER.getShopId()).eq(ShopPushOpenId::getOpenId, openId))); + } + + /** + * 推送状态修改 + * @param shopPushOpenIdEditDTO 修改信息 + * @return 是否成功 + */ + @SaAdminCheckPermission("shopMsgPush:edit") + @PutMapping + public CzgResult edit(@RequestBody @Validated ShopPushOpenIdEditDTO shopPushOpenIdEditDTO) { + return CzgResult.success(shopPushOpenIdService.edit(StpKit.USER.getShopId(), shopPushOpenIdEditDTO)); + } + + /** + * 获取订阅二维码 + * @return 二维码信息 + * @throws Exception 异常 + */ + @SaAdminCheckPermission("shopMsgPush:code") + @GetMapping("/code") + public CzgResult getCoed() throws Exception { + return CzgResult.success(shopMsgStateService.getCode(StpKit.USER.getShopId())); + } } diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopStatisticController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopStatisticController.java new file mode 100644 index 00000000..277b4e72 --- /dev/null +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopStatisticController.java @@ -0,0 +1,24 @@ +package com.czg.controller.admin; + +import com.czg.account.service.ShopProdStatisticService; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Administrator + */ +@RestController +@RequestMapping("/admin/statistic") +public class ShopStatisticController { + @Resource + private ShopProdStatisticService shopProdStatisticService; + + @GetMapping("/prod") + public CzgResult getProduct(String name, String categoryId, String startTime, String endTime) { + return CzgResult.success(shopProdStatisticService.pageInfo(StpKit.USER.getShopId(), name, categoryId, startTime, endTime)); + } +} diff --git a/cash-api/account-server/src/main/resources/static/logo.jpg b/cash-api/account-server/src/main/resources/static/logo.jpg new file mode 100644 index 00000000..3958379e Binary files /dev/null and b/cash-api/account-server/src/main/resources/static/logo.jpg differ diff --git a/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java b/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java index 288ec56b..a4efee46 100644 --- a/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java +++ b/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java @@ -81,7 +81,7 @@ public class PrintMqListener { .eq(PrintMachine::getStatus, 1) .eq(PrintMachine::getShopId, shopId) .eq(PrintMachine::getSubType, subType) - .eq(PrintMachine::getConnectionType, "network"); + .eq(PrintMachine::getConnectionType, "网络"); if (StrUtil.isNotEmpty(printMethod)) { wrapper.in(PrintMachine::getPrintMethod, Arrays.asList(printMethod, "all")); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopMsgStateDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopMsgStateDTO.java new file mode 100644 index 00000000..54634572 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopMsgStateDTO.java @@ -0,0 +1,57 @@ + +package com.czg.account.dto; + +import java.io.Serializable; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 店铺消息推送设置 实体类。 + * + * @author zs + * @since 2025-03-07 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ShopMsgStateDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 类型 -1 所有消息 0库存预警 1 耗材预警 2 操作预警 + */ + private Integer type; + + /** + * 0关闭推送 1开启推送 + */ + private Integer state; + + /** + * 创建时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopProdStatisticDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopProdStatisticDTO.java new file mode 100644 index 00000000..8cb2776e --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopProdStatisticDTO.java @@ -0,0 +1,65 @@ + +package com.czg.account.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Date; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zs + * @since 2025-03-06 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ShopProdStatisticDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 商品id + */ + private Long prodId; + + /** + * 销售数量 + */ + private Long saleNum; + + /** + * 销售金额 + */ + private BigDecimal saleAmount; + + /** + * 退单量 + */ + private Long refundNum; + + /** + * 退单金额 + */ + private BigDecimal refundAmount; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 创建时间 + */ + private Date createDay; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/msg/ShopMsgEditDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/msg/ShopMsgEditDTO.java new file mode 100644 index 00000000..ecafb471 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/msg/ShopMsgEditDTO.java @@ -0,0 +1,18 @@ +package com.czg.account.dto.msg; + +import lombok.Data; + +/** + * @author Administrator + */ +@Data +public class ShopMsgEditDTO { + /** + * 类型 -1 所有消息 0库存预警 1 耗材预警 2 操作预警 + */ + private Integer type; + /** + * 0关闭 1开启 + */ + private Integer state; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/msg/ShopPushOpenIdEditDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/msg/ShopPushOpenIdEditDTO.java new file mode 100644 index 00000000..b924c6b0 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/msg/ShopPushOpenIdEditDTO.java @@ -0,0 +1,27 @@ +package com.czg.account.dto.msg; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * @author Administrator + */ +@Data +public class ShopPushOpenIdEditDTO { + /** + * openId + */ + @NotEmpty(message = "openId不为空") + private String openId; + /** + * 类型 耗材推送 con 商品推送 pro 操作预警 ope + */ + @NotEmpty(message = "typeInfo不为空") + private List typeInfo; + + private Integer status; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopMsgState.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopMsgState.java new file mode 100644 index 00000000..1b429dce --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopMsgState.java @@ -0,0 +1,63 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 店铺消息推送设置 实体类。 + * + * @author zs + * @since 2025-03-07 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_msg_state") +public class ShopMsgState implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 类型 -1 所有消息 0库存预警 1 耗材预警 2 操作预警 + */ + private Integer type; + + /** + * 0关闭推送 1开启推送 + */ + private Integer state; + + /** + * 创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopProdStatistic.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopProdStatistic.java new file mode 100644 index 00000000..c6d39a8d --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopProdStatistic.java @@ -0,0 +1,71 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Date; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zs + * @since 2025-03-06 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_prod_statistic") +public class ShopProdStatistic implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 商品id + */ + private Long prodId; + + /** + * 销售数量 + */ + private Long saleNum; + + /** + * 销售金额 + */ + private BigDecimal saleAmount; + + /** + * 退单量 + */ + private Long refundNum; + + /** + * 退单金额 + */ + private BigDecimal refundAmount; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 创建时间 + */ + private Date createDay; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPushOpenId.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPushOpenId.java index 378e9833..3ff6b2c5 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPushOpenId.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPushOpenId.java @@ -1,5 +1,6 @@ package com.czg.account.entity; +import com.alibaba.fastjson2.annotation.JSONField; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; @@ -8,6 +9,7 @@ import java.io.Serializable; import java.time.LocalDateTime; import java.io.Serial; +import java.util.List; import lombok.AllArgsConstructor; import lombok.Builder; @@ -48,7 +50,7 @@ public class ShopPushOpenId implements Serializable { /** * 状态 1 正常 0 禁用 */ - private String status; + private Integer status; /** * 创建时间 @@ -62,4 +64,17 @@ public class ShopPushOpenId implements Serializable { @Column(onInsertValue = "now()", onUpdateValue = "now()") private LocalDateTime updateTime; + /** + * 可推送类型 json字符串 耗材推送 conState 商品推送 proState 操作预警 allState + */ + private Object typeInfo; + /** + * 昵称 + */ + private String nickname; + /** + * 头像 + */ + private String avatar; + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopMsgStateService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopMsgStateService.java new file mode 100644 index 00000000..d17acf02 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopMsgStateService.java @@ -0,0 +1,22 @@ +package com.czg.account.service; + +import com.czg.account.dto.msg.ShopMsgEditDTO; +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.ShopMsgState; + +import java.util.HashMap; + +/** + * 店铺消息推送设置 服务层。 + * + * @author zs + * @since 2025-03-07 + */ +public interface ShopMsgStateService extends IService { + + HashMap getState(Long shopId); + + Boolean edit(Long shopId, ShopMsgEditDTO shopMsgEditDTO); + + String getCode(Long shopId) throws Exception; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopProdStatisticService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopProdStatisticService.java new file mode 100644 index 00000000..a8462f8d --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopProdStatisticService.java @@ -0,0 +1,16 @@ +package com.czg.account.service; + +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.ShopProdStatistic; + +/** + * 服务层。 + * + * @author zs + * @since 2025-03-06 + */ +public interface ShopProdStatisticService extends IService { + + Page pageInfo(Long shopId, String name, String classifyId, String startTime, String endTime); +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPushOpenIdService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPushOpenIdService.java index c1c1054d..a7263049 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPushOpenIdService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPushOpenIdService.java @@ -1,8 +1,11 @@ package com.czg.account.service; +import com.czg.account.dto.msg.ShopPushOpenIdEditDTO; import com.mybatisflex.core.service.IService; import com.czg.account.entity.ShopPushOpenId; +import java.util.List; + /** * 用户推送信息表 服务层。 * @@ -11,4 +14,8 @@ import com.czg.account.entity.ShopPushOpenId; */ public interface ShopPushOpenIdService extends IService { + List pageInfo(Long shopId); + + Boolean edit(Long shopId, ShopPushOpenIdEditDTO shopPushOpenIdEditDTO); + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopProdStatisticVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopProdStatisticVO.java new file mode 100644 index 00000000..b8a067ed --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopProdStatisticVO.java @@ -0,0 +1,14 @@ +package com.czg.account.vo; + +import com.czg.account.entity.ShopProdStatistic; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author Administrator + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ShopProdStatisticVO extends ShopProdStatistic { + private String name; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopPushOpenIdVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopPushOpenIdVO.java new file mode 100644 index 00000000..78419bc2 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopPushOpenIdVO.java @@ -0,0 +1,16 @@ +package com.czg.account.vo; + +import lombok.Data; + +/** + * @author Administrator + */ +@Data +public class ShopPushOpenIdVO { + private Integer allState; + private Integer conState; + private Integer opeState; + private Integer proState; + private String nickname; + private String avatar; +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopMsgStateMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopMsgStateMapper.java new file mode 100644 index 00000000..df750397 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopMsgStateMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.account.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.ShopMsgState; + +/** + * 店铺消息推送设置 映射层。 + * + * @author zs + * @since 2025-03-07 + */ +public interface ShopMsgStateMapper extends BaseMapper { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopProdStatisticMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopProdStatisticMapper.java new file mode 100644 index 00000000..452f3a6c --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopProdStatisticMapper.java @@ -0,0 +1,20 @@ +package com.czg.service.account.mapper; + +import com.czg.account.vo.ShopProdStatisticVO; +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.ShopProdStatistic; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 映射层。 + * + * @author zs + * @since 2025-03-06 + */ +public interface ShopProdStatisticMapper extends BaseMapper { + + List pageInfo(@Param("shopId") Long shopId, @Param("name") String name, @Param("classifyId") String classifyId, + @Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPushOpenIdMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPushOpenIdMapper.java index aab641bb..3abf4d86 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPushOpenIdMapper.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPushOpenIdMapper.java @@ -1,8 +1,11 @@ package com.czg.service.account.mapper; +import com.czg.account.vo.ShopPushOpenIdVO; import com.mybatisflex.core.BaseMapper; import com.czg.account.entity.ShopPushOpenId; +import java.util.List; + /** * 用户推送信息表 映射层。 * @@ -11,4 +14,5 @@ import com.czg.account.entity.ShopPushOpenId; */ public interface ShopPushOpenIdMapper extends BaseMapper { + List pageInfo(Long shopId); } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopMsgStateServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopMsgStateServiceImpl.java new file mode 100644 index 00000000..10eb4236 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopMsgStateServiceImpl.java @@ -0,0 +1,102 @@ +package com.czg.service.account.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.qrcode.QrCodeUtil; +import cn.hutool.extra.qrcode.QrConfig; +import com.czg.account.dto.msg.ShopMsgEditDTO; +import com.czg.service.account.util.AliOssUtil; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.ShopMsgState; +import com.czg.account.service.ShopMsgStateService; +import com.czg.service.account.mapper.ShopMsgStateMapper; +import jakarta.annotation.Resource; +import org.apache.commons.io.FilenameUtils; +import org.springframework.core.io.ResourceLoader; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import javax.imageio.ImageIO; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; + +/** + * 店铺消息推送设置 服务层实现。 + * + * @author zs + * @since 2025-03-07 + */ +@Service +public class ShopMsgStateServiceImpl extends ServiceImpl implements ShopMsgStateService { + private static final HashMap MSG_TYPE = new HashMap<>(); + + static { + MSG_TYPE.put("0", "stockState"); + MSG_TYPE.put("1", "conState"); + MSG_TYPE.put("2", "opeState"); + MSG_TYPE.put("-1", "allState"); + } + + @Resource + private ResourceLoader resourceLoader; + @Resource + private AliOssUtil aliOssUtil; + + + @Override + public HashMap getState(Long shopId) { + List list = queryChain().eq(ShopMsgState::getShopId, shopId).list(); + HashMap data = new HashMap<>(); + MSG_TYPE.forEach((k, v) -> { + ShopMsgState have = null; + for (ShopMsgState shopMsgState : list) { + if (shopMsgState.getType().equals(Integer.valueOf(k))) { + have = shopMsgState; + break; + } + } + if (have == null) { + ShopMsgState msgState = new ShopMsgState(); + msgState.setShopId(shopId); + msgState.setCreateTime(DateUtil.date().toLocalDateTime()); + msgState.setType(Integer.valueOf(k)); + msgState.setState(0); + save(msgState); + } + data.put(v, have != null ? have.getState() : 0); + }); + + return data; + } + + @Override + public Boolean edit(Long shopId, ShopMsgEditDTO shopMsgEditDTO) { + ShopMsgState msgState = queryChain().eq(ShopMsgState::getShopId, shopId).eq(ShopMsgState::getType, shopMsgEditDTO.getType()).one(); + if (msgState == null) { + msgState = new ShopMsgState(); + msgState.setShopId(shopId); + msgState.setCreateTime(DateUtil.date().toLocalDateTime()); + msgState.setType(shopMsgEditDTO.getType()); + msgState.setState(shopMsgEditDTO.getState()); + return save(msgState); + } + BeanUtil.copyProperties(shopMsgEditDTO, msgState); + return updateById(msgState); + } + + @Override + public String getCode(Long shopId) throws Exception { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:/static/logo.jpg"); + InputStream inputStream = resource.getInputStream(); + String url = StrUtil.format("https://invoice.sxczgkj.cn/index/wechat/weuserk?shopId={}", shopId); + QrCodeUtil.generate(url, new QrConfig(500, 500). + setImg(ImageIO.read(inputStream)).setErrorCorrection(ErrorCorrectionLevel.H).setRatio(4), "png", outputStream); + + return aliOssUtil.uploadSuffix(outputStream.toByteArray(), "png"); + } +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopProdStatisticServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopProdStatisticServiceImpl.java new file mode 100644 index 00000000..9d1d1337 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopProdStatisticServiceImpl.java @@ -0,0 +1,26 @@ +package com.czg.service.account.service.impl; + +import com.czg.utils.PageUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.ShopProdStatistic; +import com.czg.account.service.ShopProdStatisticService; +import com.czg.service.account.mapper.ShopProdStatisticMapper; +import org.springframework.stereotype.Service; + +/** + * 服务层实现。 + * + * @author zs + * @since 2025-03-06 + */ +@Service +public class ShopProdStatisticServiceImpl extends ServiceImpl implements ShopProdStatisticService{ + @Override + public Page pageInfo(Long shopId, String name, String classifyId, String startTime, String endTime) { + PageHelper.startPage(PageUtil.buildPageHelp()); + return PageUtil.convert(new PageInfo<>(mapper.pageInfo(shopId, name, classifyId, startTime, endTime))); + } +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPushOpenIdServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPushOpenIdServiceImpl.java index f6d0961d..2fdff9d5 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPushOpenIdServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPushOpenIdServiceImpl.java @@ -1,11 +1,18 @@ package com.czg.service.account.service.impl; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.czg.account.dto.msg.ShopPushOpenIdEditDTO; +import com.czg.exception.ApiNotPrintException; +import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import com.czg.account.entity.ShopPushOpenId; import com.czg.account.service.ShopPushOpenIdService; import com.czg.service.account.mapper.ShopPushOpenIdMapper; import org.springframework.stereotype.Service; +import java.util.List; + /** * 用户推送信息表 服务层实现。 * @@ -15,4 +22,24 @@ import org.springframework.stereotype.Service; @Service public class ShopPushOpenIdServiceImpl extends ServiceImpl implements ShopPushOpenIdService{ + @Override + public List pageInfo(Long shopId) { +// PageHelper.startPage(PageUtil.buildPageHelp()); +// return PageUtil.convert(new PageInfo<>(mapper.pageInfo(shopId))); + List list = list(new QueryWrapper().eq(ShopPushOpenId::getShopId, shopId)); + list.forEach(item -> item.setTypeInfo(JSONArray.parseArray((String) item.getTypeInfo()))); + return list; + } + + @Override + public Boolean edit(Long shopId, ShopPushOpenIdEditDTO shopPushOpenIdEditDTO) { + ShopPushOpenId pushOpenId = queryChain().eq(ShopPushOpenId::getShopId, shopId).eq(ShopPushOpenId::getOpenId, shopPushOpenIdEditDTO.getOpenId()).one(); + if (pushOpenId == null) { + throw new ApiNotPrintException("订阅用户不存在"); + } + + pushOpenId.setTypeInfo(JSONObject.toJSONString(shopPushOpenIdEditDTO.getTypeInfo())); + pushOpenId.setStatus(shopPushOpenIdEditDTO.getStatus()); + return updateById(pushOpenId); + } } diff --git a/cash-service/account-service/src/main/resources/mapper/ShopMsgStateMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopMsgStateMapper.xml new file mode 100644 index 00000000..3968181c --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/ShopMsgStateMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cash-service/account-service/src/main/resources/mapper/ShopProdStatisticMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopProdStatisticMapper.xml new file mode 100644 index 00000000..88f82e1a --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/ShopProdStatisticMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/cash-service/account-service/src/main/resources/mapper/ShopPushOpenIdMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopPushOpenIdMapper.xml index c3933725..f7cd4ba2 100644 --- a/cash-service/account-service/src/main/resources/mapper/ShopPushOpenIdMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/ShopPushOpenIdMapper.xml @@ -4,4 +4,20 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java index 7fc6601e..9c84c7c6 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java @@ -43,7 +43,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { private static final String UKEY = "UfWkhXxSkeSSscsU"; public FeiPrinter() { - super("fePrinter"); + super("飞鹅"); } private final PrintSignLabel printSignLabel = new PrintSignLabel() diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java index 9542761c..932578c0 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java @@ -142,7 +142,7 @@ public abstract class PrinterHandler { if (StrUtil.isBlank(printerBrand)) { throw new RuntimeException("打印机品牌未赋值"); } - return printerBrand.equals(currentBrand) && "network".equals(connectType); + return printerBrand.equals(currentBrand) && "网络".equals(connectType); } protected List getCanPrintOrderDetails(boolean partPrint, Long orderId, List tbOrderDetailList, List categoryIds) { diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java index 29fec7ee..b46dc870 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java @@ -47,7 +47,7 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl { private RestTemplate restTemplate; public YxyPrinter() { - super("yxyPrinter"); + super("云想印"); } private PrintSignLabel printSignLabel = new PrintSignLabel()