From 7abdb0d1b357f8658978a69cb526b477f8475bfa Mon Sep 17 00:00:00 2001 From: renfan <2206580733@qq.com> Date: Fri, 26 Jul 2024 17:29:28 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90admin=E3=80=91=E6=96=B0=E5=A2=9E#?= =?UTF-8?q?=E5=A4=87=E4=BB=B6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/wxpay/WxPayConfiguration.java | 132 -------------- .../admin/config/wxpay/WxPayProperties.java | 31 ---- .../controller/pay/DevPayController.java | 65 ------- .../controller/pay/DevPayWayController.java | 51 ------ .../sparePart/SparePartController.java | 98 +++++++++++ .../hcy/admin/service/pay/IDevPayService.java | 35 ---- .../service/pay/impl/DevPayServiceImpl.java | 118 ------------- .../service/sparePart/ISparePartService.java | 60 +++++++ .../sparePart/impl/SparePartServiceImpl.java | 165 ++++++++++++++++++ .../admin/service/way/IDevPayWayService.java | 29 --- .../way/impl/DevPayWayServiceImpl.java | 116 ------------ .../validate/sparePart/SparePartParam.java | 56 ++++++ .../admin/vo/sparePart/SparePartDetailVo.java | 23 +++ .../admin/vo/sparePart/SparePartListVo.java | 25 +++ admin/src/main/resources/application-dev.yml | 2 +- admin/target/classes/application-dev.yml | 2 +- .../hcy/common/entity/setting/DictData.java | 1 - .../common/entity/sparePart/SparePart.java | 31 ++++ .../hcy/common/mapper/pay/DevPayMapper.java | 19 -- .../mapper/sparePart/SparePartMapper.java | 13 ++ .../system/ISystemDevPayWayService.java | 23 --- .../impl/SystemDevPayWayServiceImpl.java | 96 ---------- .../admin-log4j2-ERROR-2024-07-22_1.log.gz | Bin 0 -> 1531 bytes .../admin-log4j2-ERROR-2024-07-25_1.log.gz | Bin 0 -> 14934 bytes .../admin-log4j2-INFO-2024-07-22_1.log.gz | Bin 0 -> 15270 bytes .../admin-log4j2-INFO-2024-07-25_1.log.gz | Bin 0 -> 64878 bytes .../admin-log4j2-WARN-2024-07-22_1.log.gz | Bin 0 -> 1979 bytes .../admin-log4j2-WARN-2024-07-25_1.log.gz | Bin 0 -> 15925 bytes 28 files changed, 473 insertions(+), 718 deletions(-) delete mode 100644 admin/src/main/java/com/hcy/admin/config/wxpay/WxPayConfiguration.java delete mode 100644 admin/src/main/java/com/hcy/admin/config/wxpay/WxPayProperties.java delete mode 100644 admin/src/main/java/com/hcy/admin/controller/pay/DevPayController.java delete mode 100644 admin/src/main/java/com/hcy/admin/controller/pay/DevPayWayController.java create mode 100644 admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java delete mode 100644 admin/src/main/java/com/hcy/admin/service/pay/IDevPayService.java delete mode 100644 admin/src/main/java/com/hcy/admin/service/pay/impl/DevPayServiceImpl.java create mode 100644 admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java create mode 100644 admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java delete mode 100644 admin/src/main/java/com/hcy/admin/service/way/IDevPayWayService.java delete mode 100644 admin/src/main/java/com/hcy/admin/service/way/impl/DevPayWayServiceImpl.java create mode 100644 admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java create mode 100644 admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java create mode 100644 admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java create mode 100644 common/src/main/java/com/hcy/common/entity/sparePart/SparePart.java delete mode 100644 common/src/main/java/com/hcy/common/mapper/pay/DevPayMapper.java create mode 100644 common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java delete mode 100644 front/src/main/java/com/hcy/front/service/system/ISystemDevPayWayService.java delete mode 100644 front/src/main/java/com/hcy/front/service/system/impl/SystemDevPayWayServiceImpl.java create mode 100644 www/wwwroot/java-smyy/server/like-admin/admin-log4j2-ERROR-2024-07-22_1.log.gz create mode 100644 www/wwwroot/java-smyy/server/like-admin/admin-log4j2-ERROR-2024-07-25_1.log.gz create mode 100644 www/wwwroot/java-smyy/server/like-admin/admin-log4j2-INFO-2024-07-22_1.log.gz create mode 100644 www/wwwroot/java-smyy/server/like-admin/admin-log4j2-INFO-2024-07-25_1.log.gz create mode 100644 www/wwwroot/java-smyy/server/like-admin/admin-log4j2-WARN-2024-07-22_1.log.gz create mode 100644 www/wwwroot/java-smyy/server/like-admin/admin-log4j2-WARN-2024-07-25_1.log.gz diff --git a/admin/src/main/java/com/hcy/admin/config/wxpay/WxPayConfiguration.java b/admin/src/main/java/com/hcy/admin/config/wxpay/WxPayConfiguration.java deleted file mode 100644 index fd770ec..0000000 --- a/admin/src/main/java/com/hcy/admin/config/wxpay/WxPayConfiguration.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.hcy.admin.config.wxpay; - -import com.alibaba.fastjson.JSON; -import com.github.binarywang.wxpay.config.WxPayConfig; -import com.github.binarywang.wxpay.service.WxPayService; -import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; -import com.hcy.common.entity.pay.DevPay; -import com.hcy.common.entity.system.SystemConfig; -import com.hcy.common.entity.wxpay.SystemWxPayConfig; -import com.hcy.common.enums.OrderPlayTypeEnum; -import com.hcy.common.mapper.pay.DevPayMapper; -import com.hcy.common.mapper.system.SystemConfigMapper; -import lombok.AllArgsConstructor; -import org.apache.commons.lang3.StringUtils; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import javax.annotation.Resource; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author panweiliang - */ -@Configuration -@ConditionalOnClass(WxPayService.class) -@AllArgsConstructor -public class WxPayConfiguration { - - @Resource - private DevPayMapper devPayMapper; - - @Resource - private SystemConfigMapper systemConfigMapper; - - @Bean("mpWxPayService") - public WxPayService mpWxPayService() { - Boolean flag = Boolean.FALSE; - WxPayConfig payConfig = new WxPayConfig(); - DevPay devPay = devPayMapper.getEntityByPayWay(OrderPlayTypeEnum.WECHAT_PAY.getType()); - String config = devPay.getConfig(); - SystemWxPayConfig systemWxPayConfig = JSON.parseObject(config, SystemWxPayConfig.class); - //payConfig.setAppId(StringUtils.trimToNull(systemWxPayConfig.getAppId())); - payConfig.setAppId(StringUtils.trimToNull(this.getAppId("mp_channel"))); - payConfig.setMchId(StringUtils.trimToNull(systemWxPayConfig.getMchId())); - payConfig.setApiV3Key(StringUtils.trimToNull(systemWxPayConfig.getPaySignKey())); - if (StringUtils.isNotEmpty(systemWxPayConfig.getApiclientKey())) { - payConfig.setPrivateKeyContent(StringUtils.trimToNull(systemWxPayConfig.getApiclientKey()).getBytes()); - flag = Boolean.TRUE; - } - if (StringUtils.isNotEmpty(systemWxPayConfig.getApiclientCert())) { - payConfig.setPrivateCertContent(StringUtils.trimToNull(systemWxPayConfig.getApiclientCert()).getBytes()); - flag = Boolean.TRUE; - } - // 可以指定是否使用沙箱环境 - payConfig.setUseSandboxEnv(false); - WxPayService wxPayService = new WxPayServiceImpl(); - if (flag) { - wxPayService.setConfig(payConfig); - } - return wxPayService; - } - - @Bean("oaWxPayService") - public WxPayService oaWxPayService() { - Boolean flag = Boolean.FALSE; - WxPayConfig payConfig = new WxPayConfig(); - DevPay devPay = devPayMapper.getEntityByPayWay(OrderPlayTypeEnum.WECHAT_PAY.getType()); - String config = devPay.getConfig(); - SystemWxPayConfig systemWxPayConfig = JSON.parseObject(config, SystemWxPayConfig.class); - //payConfig.setAppId(StringUtils.trimToNull(systemWxPayConfig.getAppId())); - payConfig.setAppId(StringUtils.trimToNull(this.getAppId("oa_channel"))); - payConfig.setMchId(StringUtils.trimToNull(systemWxPayConfig.getMchId())); - payConfig.setApiV3Key(StringUtils.trimToNull(systemWxPayConfig.getPaySignKey())); - if (StringUtils.isNotEmpty(systemWxPayConfig.getApiclientKey())) { - payConfig.setPrivateKeyContent(StringUtils.trimToNull(systemWxPayConfig.getApiclientKey()).getBytes()); - flag = Boolean.TRUE; - } - if (StringUtils.isNotEmpty(systemWxPayConfig.getApiclientCert())) { - payConfig.setPrivateCertContent(StringUtils.trimToNull(systemWxPayConfig.getApiclientCert()).getBytes()); - flag = Boolean.TRUE; - } - // 可以指定是否使用沙箱环境 - payConfig.setUseSandboxEnv(false); - WxPayService wxPayService = new WxPayServiceImpl(); - if (flag) { - wxPayService.setConfig(payConfig); - } - return wxPayService; - } - - @Bean("h5WxPayService") - public WxPayService h5WxPayService() { - Boolean flag = Boolean.FALSE; - WxPayConfig payConfig = new WxPayConfig(); - DevPay devPay = devPayMapper.getEntityByPayWay(OrderPlayTypeEnum.WECHAT_PAY.getType()); - String config = devPay.getConfig(); - SystemWxPayConfig systemWxPayConfig = JSON.parseObject(config, SystemWxPayConfig.class); - //payConfig.setAppId(StringUtils.trimToNull(systemWxPayConfig.getAppId())); - payConfig.setAppId(StringUtils.trimToNull(this.getAppId("h5_channel"))); - payConfig.setMchId(StringUtils.trimToNull(systemWxPayConfig.getMchId())); - payConfig.setApiV3Key(StringUtils.trimToNull(systemWxPayConfig.getPaySignKey())); - if (StringUtils.isNotEmpty(systemWxPayConfig.getApiclientKey())) { - payConfig.setPrivateKeyContent(StringUtils.trimToNull(systemWxPayConfig.getApiclientKey()).getBytes()); - flag = Boolean.TRUE; - } - if (StringUtils.isNotEmpty(systemWxPayConfig.getApiclientCert())) { - payConfig.setPrivateCertContent(StringUtils.trimToNull(systemWxPayConfig.getApiclientCert()).getBytes()); - flag = Boolean.TRUE; - } - // 可以指定是否使用沙箱环境 - payConfig.setUseSandboxEnv(false); - WxPayService wxPayService = new WxPayServiceImpl(); - if (flag) { - wxPayService.setConfig(payConfig); - } - return wxPayService; - } - - private String getAppId(String channel) { - List configs = systemConfigMapper.getAppId(channel); - Map map = new LinkedHashMap<>(); - for (SystemConfig config : configs) { - map.put(config.getName(), config.getValue()); - } - return map.getOrDefault("appId", ""); - } - - -} diff --git a/admin/src/main/java/com/hcy/admin/config/wxpay/WxPayProperties.java b/admin/src/main/java/com/hcy/admin/config/wxpay/WxPayProperties.java deleted file mode 100644 index 639a06e..0000000 --- a/admin/src/main/java/com/hcy/admin/config/wxpay/WxPayProperties.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.hcy.admin.config.wxpay; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * wxpay pay properties. - * - * @author panweiliang - */ -@Data -@Component -@ConfigurationProperties(prefix = "wx.pay") -public class WxPayProperties { - /** - * 订单支付后回调 - */ - private String orderNotifyUrl; - - /** - * - */ - private String orderRefundNotifyUrl; - - /** - * 商品描述 - */ - private String description; - -} diff --git a/admin/src/main/java/com/hcy/admin/controller/pay/DevPayController.java b/admin/src/main/java/com/hcy/admin/controller/pay/DevPayController.java deleted file mode 100644 index 9dc3881..0000000 --- a/admin/src/main/java/com/hcy/admin/controller/pay/DevPayController.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.hcy.admin.controller.pay; - -import com.hcy.admin.config.aop.Log; -import com.hcy.admin.service.pay.IDevPayService; -import com.hcy.admin.validate.pay.DevPayParam; -import com.hcy.admin.vo.pay.DevPayDetailVo; -import com.hcy.admin.vo.pay.DevPayListVo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.List; - -/** - * 支付配置管理 - */ -@Api(tags = "支付配置管理") -@RestController -@RequestMapping("api/pay") -public class DevPayController { - - @Resource - IDevPayService iDevPayService; - - /** - * 支付配置列表 - * - * @return Object - */ - @ApiOperation(value = "支付配置管理 - 列表") - @GetMapping("/list") - public List list() { - return iDevPayService.listPage(); - } - - /** - * 支付配置详情 - * - * @param id 主键ID - * @return Object - */ - @ApiOperation(value = "支付配置管理 - 详情") - @GetMapping("/detail") - public DevPayDetailVo detail(@Validated @RequestParam("id") Long id) { - return iDevPayService.detail(id); - } - - - /** - * 支付配置编辑 - * - * @param devPayParam 参数 - * @return Object - */ - @ApiOperation(value = "支付配置管理 - 编辑") - @Log(title = "支付配置编辑") - @PostMapping("/edit") - public void edit(@Validated(value = DevPayParam.update.class) @RequestBody DevPayParam devPayParam) throws Exception { - iDevPayService.edit(devPayParam); - } - - -} diff --git a/admin/src/main/java/com/hcy/admin/controller/pay/DevPayWayController.java b/admin/src/main/java/com/hcy/admin/controller/pay/DevPayWayController.java deleted file mode 100644 index f4e6388..0000000 --- a/admin/src/main/java/com/hcy/admin/controller/pay/DevPayWayController.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hcy.admin.controller.pay; - -import com.hcy.admin.config.aop.Log; -import com.hcy.admin.service.way.IDevPayWayService; -import com.hcy.admin.validate.way.DevPayWayParam; -import com.hcy.admin.vo.way.DevPayWayListVo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -/** - * 支付方式管理 - */ -@Api(tags = "支付方式管理") -@RestController -@RequestMapping("api/way") -public class DevPayWayController { - - @Resource - IDevPayWayService iDevPayWayService; - - /** - * 支付方式列表 - * - * @return Object - */ - @ApiOperation(value = "支付方式管理 - 列表") - @GetMapping("/list") - public Map> list() { - return iDevPayWayService.listPage(); - } - - /** - * 支付方式编辑 - * - * @param devPayWayParam 参数 - * @return Object - */ - @ApiOperation(value = "支付方式管理 - 编辑") - @Log(title = "支付方式编辑") - @PostMapping("/edit") - public void edit(@Validated(value = DevPayWayParam.update.class) @RequestBody List devPayWayParam) { - iDevPayWayService.edit(devPayWayParam); - } - -} diff --git a/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java b/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java new file mode 100644 index 0000000..4e904a0 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java @@ -0,0 +1,98 @@ +package com.hcy.admin.controller.sparePart; + +import com.hcy.admin.config.aop.Log; +import com.hcy.admin.service.sparePart.ISparePartService; +import com.hcy.admin.validate.sparePart.SparePartParam; +import com.hcy.admin.validate.common.PageParam; + +import com.hcy.admin.vo.sparePart.SparePartDetailVo; +import com.hcy.admin.vo.sparePart.SparePartListVo; +import com.hcy.common.core.AjaxResult; +import com.hcy.common.core.PageResult; +import com.hcy.common.validator.annotation.IDMust; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * 备件信息管理 + */ +@RestController +@RequestMapping("api/sparePart") +public class SparePartController { + + @Resource + ISparePartService iSparePartService; + + /** + * 备件信息列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/list") + public Object list(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iSparePartService.list(pageParam, params); + return AjaxResult.success(list); + } + /** + * 备件信息详情 + * + * @author hcy + * @param id 主键ID + * @return Object + */ + @GetMapping("/detail") + public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) { + SparePartDetailVo detail = iSparePartService.detail(id); + return AjaxResult.success(detail); + } + + /** + * 备件信息新增 + * + * @author hcy + * @param sparePartParam 参数 + * @return Object + */ + @Log(title = "备件信息新增") + @PostMapping("/add") + public Object add(@Validated(value = SparePartParam.create.class) @RequestBody SparePartParam sparePartParam) { + iSparePartService.add(sparePartParam); + return AjaxResult.success(); + } + + /** + * 备件信息编辑 + * + * @author hcy + * @param sparePartParam 参数 + * @return Object + */ + @Log(title = "备件信息编辑") + @PostMapping("/edit") + public Object edit(@Validated(value = SparePartParam.update.class) @RequestBody SparePartParam sparePartParam) { + iSparePartService.edit(sparePartParam); + return AjaxResult.success(); + } + + /** + * 备件信息删除 + * + * @author hcy + * @param sparePartParam 参数 + * @return Object + */ + @Log(title = "备件信息删除") + @PostMapping("/del") + public Object del(@Validated(value = SparePartParam.delete.class) @RequestBody SparePartParam sparePartParam) { + iSparePartService.del(sparePartParam.getIds()); + return AjaxResult.success(); + } + +} diff --git a/admin/src/main/java/com/hcy/admin/service/pay/IDevPayService.java b/admin/src/main/java/com/hcy/admin/service/pay/IDevPayService.java deleted file mode 100644 index cd1217d..0000000 --- a/admin/src/main/java/com/hcy/admin/service/pay/IDevPayService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.hcy.admin.service.pay; - -import com.hcy.admin.validate.pay.DevPayParam; -import com.hcy.admin.vo.pay.DevPayDetailVo; -import com.hcy.admin.vo.pay.DevPayListVo; - -import java.util.List; - -/** - * 支付配置服务接口类 - */ -public interface IDevPayService { - - /** - * 支付配置列表 - * - * @return PageResult - */ - List listPage(); - - /** - * 支付配置详情 - * - * @param id 主键ID - * @return DevPay - */ - DevPayDetailVo detail(Long id); - - /** - * 支付配置编辑 - * - * @param devPayParam 参数 - */ - void edit(DevPayParam devPayParam) throws Exception; -} diff --git a/admin/src/main/java/com/hcy/admin/service/pay/impl/DevPayServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/pay/impl/DevPayServiceImpl.java deleted file mode 100644 index 2984a76..0000000 --- a/admin/src/main/java/com/hcy/admin/service/pay/impl/DevPayServiceImpl.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.hcy.admin.service.pay.impl; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.Lists; -import com.hcy.admin.service.pay.IDevPayService; -import com.hcy.admin.validate.pay.DevPayParam; -import com.hcy.admin.vo.pay.DevPayConfigVo; -import com.hcy.admin.vo.pay.DevPayDetailVo; -import com.hcy.admin.vo.pay.DevPayListVo; -import com.hcy.common.entity.pay.DevPay; -import com.hcy.common.enums.OrderPlayTypeEnum; -import com.hcy.common.mapper.pay.DevPayMapper; -import com.hcy.common.utils.UrlUtil; -import com.hcy.common.utils.YmlUtil; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -/** - * 支付配置实现类 - */ -@Service -public class DevPayServiceImpl extends ServiceImpl implements IDevPayService { - - @Resource - DevPayMapper devPayMapper; - - /** - * 支付配置列表 - * - * @return PageResult - */ - @Override - public List listPage() { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.orderByAsc(DevPay::getId); - List list = super.list(lambdaQueryWrapper); - if (CollectionUtils.isEmpty(list)) { - return Lists.newArrayList(); - } - List targetList = Lists.newArrayList(); - Map map = OrderPlayTypeEnum.getMap(); - for (DevPay devPay : list) { - DevPayListVo vo = new DevPayListVo(); - BeanUtils.copyProperties(devPay, vo); - vo.setPayWayDesc(map.get(devPay.getPayWay())); - vo.setImage(UrlUtil.toAbsoluteUrl(devPay.getImage())); - targetList.add(vo); - } - return targetList; - } - - /** - * 支付配置详情 - * - * @param id 主键参数 - * @return DevPay - */ - @Override - public DevPayDetailVo detail(Long id) { - DevPay model = devPayMapper.selectOne( - new QueryWrapper() - .eq("id", id) - .last("limit 1")); - - Assert.notNull(model, "数据不存在"); - - String env = YmlUtil.get("like.production"); - boolean envStatus = StringUtils.isNotEmpty(env) && env.equals("true"); - String config = model.getConfig(); - DevPayConfigVo devPayConfigVo = JSON.parseObject(config, DevPayConfigVo.class); - Assert.notNull(devPayConfigVo, "该支付方式配置数据为空"); - DevPayDetailVo vo = new DevPayDetailVo(); - BeanUtils.copyProperties(model, vo); - devPayConfigVo.setApiclientKey(envStatus ? "******" : devPayConfigVo.getApiclientKey()); - devPayConfigVo.setApiclientCert(envStatus ? "******" : devPayConfigVo.getApiclientCert()); - devPayConfigVo.setPaySignKey(envStatus ? "******" : devPayConfigVo.getPaySignKey()); - devPayConfigVo.setMchId(envStatus ? "******" : devPayConfigVo.getMchId()); - vo.setConfig(devPayConfigVo); - vo.setImage(UrlUtil.toAbsoluteUrl(model.getImage())); - vo.setPayWayDesc(OrderPlayTypeEnum.getMap().get(model.getPayWay())); - return vo; - } - - /** - * 支付配置编辑 - * - * @param devPayParam 参数 - */ - @Override - public void edit(DevPayParam devPayParam) throws Exception { - DevPay model = devPayMapper.selectOne( - new QueryWrapper() - .eq("id", devPayParam.getId()) - .last("limit 1")); - - Assert.notNull(model, "数据不存在!"); - - model.setId(devPayParam.getId()); - model.setName(devPayParam.getName()); - model.setPayWay(devPayParam.getPayWay()); - String config = JSON.toJSONString(devPayParam.getConfig()); - model.setConfig(config); - model.setImage(UrlUtil.toRelativeUrl(devPayParam.getImage())); - model.setSort(devPayParam.getSort()); - devPayMapper.updateById(model); - //wxPayConfigBuilder.buildWxPayClient(); - } -} diff --git a/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java b/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java new file mode 100644 index 0000000..62e43f0 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java @@ -0,0 +1,60 @@ +package com.hcy.admin.service.sparePart; + +import com.hcy.admin.validate.common.PageParam; +import com.hcy.admin.validate.sparePart.SparePartParam; +import com.hcy.admin.vo.sparePart.SparePartListVo; +import com.hcy.admin.vo.sparePart.SparePartDetailVo; +import com.hcy.common.core.PageResult; + +import java.util.List; +import java.util.Map; + +/** + * 备件信息服务接口类 + */ +public interface ISparePartService { + + /** + * 备件信息列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + PageResult list(PageParam pageParam, Map params); + + /** + * 备件信息详情 + * + * @author hcy + * @param id 主键ID + * @return SparePart + */ + SparePartDetailVo detail(Integer id); + + /** + * 备件信息新增 + * + * @author hcy + * @param sparePartParam 参数 + */ + void add(SparePartParam sparePartParam); + + /** + * 备件信息编辑 + * + * @author hcy + * @param sparePartParam 参数 + */ + void edit(SparePartParam sparePartParam); + + /** + * 备件信息删除 + * + * @author hcy + * @param ids 主键ID + */ + void del(List ids); + +} diff --git a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java new file mode 100644 index 0000000..5c75484 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java @@ -0,0 +1,165 @@ +package com.hcy.admin.service.sparePart.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.hcy.admin.service.sparePart.ISparePartService; +import com.hcy.admin.validate.common.PageParam; +import com.hcy.admin.validate.sparePart.SparePartParam; +import com.hcy.admin.vo.sparePart.SparePartListVo; +import com.hcy.admin.vo.sparePart.SparePartDetailVo; +import com.hcy.common.constant.GlobalConstant; +import com.hcy.common.core.PageResult; +import com.hcy.common.entity.activity.Activity; +import com.hcy.common.entity.sparePart.SparePart; +import com.hcy.common.mapper.sparePart.SparePartMapper; +import com.hcy.common.utils.TimeUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; + +import java.util.*; + +/** + * 备件信息实现类 + */ +@Service +public class SparePartServiceImpl implements ISparePartService { + + @Resource + SparePartMapper sparePartMapper; + + /** + * 备件信息列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + @Override + public PageResult list(PageParam pageParam, Map params) { + Integer page = pageParam.getPageNo(); + Integer limit = pageParam.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByDesc("id"); + + sparePartMapper.setSearch(queryWrapper, params, new String[]{ + "=:sparePartsCode@spare_parts_code:str", + "like:sparePartsName@spare_parts_name:str", + "=:owningWarehouse@owning_warehouse:long", + "=:specificationsModel@specifications_model:str", + "=:unit:str", + "=:quantity:long", + }); + + IPage iPage = sparePartMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for(SparePart item : iPage.getRecords()) { + SparePartListVo vo = new SparePartListVo(); + BeanUtils.copyProperties(item, vo); + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 备件信息详情 + * + * @author hcy + * @param id 主键参数 + * @return SparePart + */ + @Override + public SparePartDetailVo detail(Integer id) { + SparePart model = sparePartMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在"); + + SparePartDetailVo vo = new SparePartDetailVo(); + BeanUtils.copyProperties(model, vo); + return vo; + } + + /** + * 备件信息新增 + * + * @author hcy + * @param sparePartParam 参数 + */ + @Override + public void add(SparePartParam sparePartParam) { + SparePart model = new SparePart(); + model.setSparePartsCode(sparePartParam.getSparePartsCode()); + model.setSparePartsName(sparePartParam.getSparePartsName()); + model.setOwningWarehouse(sparePartParam.getOwningWarehouse()); + model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); + model.setUnit(sparePartParam.getUnit()); + model.setQuantity(sparePartParam.getQuantity()); + model.setCreateTime(System.currentTimeMillis() / 1000); + sparePartMapper.insert(model); + } + + /** + * 备件信息编辑 + * + * @author hcy + * @param sparePartParam 参数 + */ + @Override + public void edit(SparePartParam sparePartParam) { + SparePart model = sparePartMapper.selectOne( + new QueryWrapper() + .eq("id", sparePartParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setId(sparePartParam.getId()); + model.setSparePartsCode(sparePartParam.getSparePartsCode()); + model.setSparePartsName(sparePartParam.getSparePartsName()); + model.setOwningWarehouse(sparePartParam.getOwningWarehouse()); + model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); + model.setUnit(sparePartParam.getUnit()); + model.setQuantity(sparePartParam.getQuantity()); + sparePartMapper.updateById(model); + } + + /** + * 备件信息删除 + * + * @author hcy + * @param ids 主键ID + */ + @Override + public void del(List ids) { + List modelList = sparePartMapper.selectList( + new QueryWrapper() + .in("id", ids)); + + + Assert.notNull(modelList, "数据不存在!"); + // GlobalConstant.NOT_DELETE 调用未删除常量 + // GlobalConstant.DELETE 删除标识 + + for (SparePart sparePart : modelList) { + sparePart.setIsDelete(GlobalConstant.DELETE); + sparePart.setDeleteTime(System.currentTimeMillis() / 1000); + sparePartMapper.updateById(sparePart);// 进行伪删除 根据id把is_delete修改成1 + } + } + +} diff --git a/admin/src/main/java/com/hcy/admin/service/way/IDevPayWayService.java b/admin/src/main/java/com/hcy/admin/service/way/IDevPayWayService.java deleted file mode 100644 index 3ee3df1..0000000 --- a/admin/src/main/java/com/hcy/admin/service/way/IDevPayWayService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.hcy.admin.service.way; - -import com.hcy.admin.validate.way.DevPayWayParam; -import com.hcy.admin.vo.way.DevPayWayListVo; - -import java.util.List; -import java.util.Map; - -/** - * 支付方式服务接口类 - */ -public interface IDevPayWayService { - - /** - * 支付方式列表 - * - * @return PageResult - */ - Map> listPage(); - - - /** - * 支付方式编辑 - * - * @param devPayWayParam 参数 - */ - void edit(List devPayWayParam); - -} diff --git a/admin/src/main/java/com/hcy/admin/service/way/impl/DevPayWayServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/way/impl/DevPayWayServiceImpl.java deleted file mode 100644 index 2173fe3..0000000 --- a/admin/src/main/java/com/hcy/admin/service/way/impl/DevPayWayServiceImpl.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.hcy.admin.service.way.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.github.yulichang.query.MPJQueryWrapper; -import com.google.common.collect.Maps; -import com.hcy.admin.service.way.IDevPayWayService; -import com.hcy.admin.validate.way.DevPayWayParam; -import com.hcy.admin.vo.way.DevPayWayListVo; -import com.hcy.common.entity.way.DevPayWay; -import com.hcy.common.enums.ClientEnum; -import com.hcy.common.enums.OrderPlayTypeEnum; -import com.hcy.common.enums.StatusEnum; -import com.hcy.common.exception.OperateException; -import com.hcy.common.mapper.way.DevPayWayMapper; -import com.hcy.common.utils.UrlUtil; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * 支付方式实现类 - */ -@Service -public class DevPayWayServiceImpl extends ServiceImpl implements IDevPayWayService { - - @Resource - DevPayWayMapper devPayWayMapper; - - /** - * 支付方式列表 - * - * @return PageResult - */ - @Override - public Map> listPage() { - Map map = OrderPlayTypeEnum.getMap(); - Map clientMap = ClientEnum.getMap(); - Map> devPayWayListVoMap = Maps.newHashMap(); - - MPJQueryWrapper mpjQueryWrapper = new MPJQueryWrapper() - .selectAll(DevPayWay.class) - .select("pay.name as payName, pay.image as payImage, pay.pay_way as payWay") - .innerJoin("la_dev_pay pay ON pay.id=t.pay_id") - .orderByDesc(Arrays.asList("t.id")); - List list = devPayWayMapper.selectJoinList(DevPayWayListVo.class, mpjQueryWrapper); - - - List minprogram = new LinkedList<>(); - List officialAccounts = new LinkedList<>(); - List h5 = new LinkedList<>(); - List other = new LinkedList<>(); - - //场景:1-微信小程序;2-微信公众号;3-H5;4-PC商城;5-APP; - list.forEach(item -> { - item.setPayWayDesc(map.get(item.getPayId())); - item.setSceneDesc(clientMap.get(item.getScene())); - item.setPayImage(UrlUtil.toAbsoluteUrl(item.getPayImage())); - Integer scene = item.getScene(); - switch (scene) { - case 1: - minprogram.add(item); - devPayWayListVoMap.put(item.getId(), minprogram); - break; - case 2: - officialAccounts.add(item); - devPayWayListVoMap.put(item.getId(), officialAccounts); - break; - case 3: - h5.add(item); - devPayWayListVoMap.put(item.getId(), h5); - break; - default: - other.add(item); - devPayWayListVoMap.put(item.getId(), other); - break; - } - }); - return devPayWayListVoMap; - } - - - /** - * 支付方式编辑 - * - * @param devPayWayParam 参数 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void edit(List devPayWayParam) { - for (DevPayWayParam payWayParam : devPayWayParam) { - DevPayWay model = devPayWayMapper.selectOne( - new QueryWrapper() - .eq("id", payWayParam.getId()) - .last("limit 1")); - - Assert.notNull(model, "数据不存在!"); - if (StatusEnum.NOT_ENABLE.getCode() == payWayParam.getStatus()) { - throw new OperateException("小程序/公众号默认需要至少开启一个支付状态"); - } - model.setId(payWayParam.getId()); - model.setScene(payWayParam.getScene()); - model.setPayId(payWayParam.getPayId()); - model.setIsDefault(payWayParam.getIsDefault()); - model.setStatus(payWayParam.getStatus()); - devPayWayMapper.updateById(model); - } - } - -} diff --git a/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java b/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java new file mode 100644 index 0000000..2b97680 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java @@ -0,0 +1,56 @@ +package com.hcy.admin.validate.sparePart; + + +import com.hcy.common.validator.annotation.IDMust; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import lombok.Data; +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.List; + +/** + * 备件信息参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class SparePartParam implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface create{} + public interface update{} + public interface delete{} + + @IDMust(message = "id参数必传且需大于0", groups = {update.class, delete.class}) + private Integer id; + + @NotNull(message = "sparePartsCode参数缺失", groups = {create.class, update.class}) + @Length(max = 255, message = "sparePartsCode参数不能超出255个字符", groups = {create.class, update.class}) + private String sparePartsCode; + + @NotNull(message = "sparePartsName参数缺失", groups = {create.class, update.class}) + @Length(max = 255, message = "sparePartsName参数不能超出255个字符", groups = {create.class, update.class}) + private String sparePartsName; + + @NotNull(message = "owningWarehouse参数缺失", groups = {create.class, update.class}) + @DecimalMin(value = "0", message = "owningWarehouse参数值不能少于0", groups = {create.class, update.class}) + private Long owningWarehouse; + + @NotNull(message = "specificationsModel参数缺失", groups = {create.class, update.class}) + @Length(max = 255, message = "specificationsModel参数不能超出255个字符", groups = {create.class, update.class}) + private String specificationsModel; + + @NotNull(message = "unit参数缺失", groups = {create.class, update.class}) + @Length(max = 11, message = "unit参数不能超出11个字符", groups = {create.class, update.class}) + private String unit; + + @NotNull(message = "quantity参数缺失", groups = {create.class, update.class}) + @DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class}) + private Long quantity; + + private List ids; //备件id集合 +} diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java new file mode 100644 index 0000000..e3a60d6 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java @@ -0,0 +1,23 @@ +package com.hcy.admin.vo.sparePart; + +import lombok.Data; + +import java.io.Serializable; + +/** + * SparePartVo + */ +@Data +public class SparePartDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; // 主键id + private String sparePartsCode; // 备件编码 + private String sparePartsName; // 备件名称 + private Long owningWarehouse; // 所属仓库 + private String specificationsModel; // 规格型号 + private String unit; // 单位 + private Long quantity; // 库存数量 + +} diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java new file mode 100644 index 0000000..4c02ce3 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java @@ -0,0 +1,25 @@ +package com.hcy.admin.vo.sparePart; + +import lombok.Data; + +import java.io.Serializable; + +/** + * SparePartVo + */ +@Data +public class SparePartListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; // 主键id + private String sparePartsCode; // 备件编码 + private String sparePartsName; // 备件名称 + private Long owningWarehouse; // 所属仓库 + private String specificationsModel; // 规格型号 + private String unit; // 单位 + private Long quantity; // 库存数量 + private String createTime; // 创建时间 + private String updateTime; // 更新时间 + +} diff --git a/admin/src/main/resources/application-dev.yml b/admin/src/main/resources/application-dev.yml index 7fd759f..91e6ad3 100644 --- a/admin/src/main/resources/application-dev.yml +++ b/admin/src/main/resources/application-dev.yml @@ -6,7 +6,7 @@ like: spring: # 数据源配置 datasource: - url: jdbc:mysql://192.168.4.107:3306/homemaking?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false + url: jdbc:mysql://192.168.4.107:3306/charging_pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false type: com.zaxxer.hikari.HikariDataSource # 数据源类型 driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 diff --git a/admin/target/classes/application-dev.yml b/admin/target/classes/application-dev.yml index 7fd759f..91e6ad3 100644 --- a/admin/target/classes/application-dev.yml +++ b/admin/target/classes/application-dev.yml @@ -6,7 +6,7 @@ like: spring: # 数据源配置 datasource: - url: jdbc:mysql://192.168.4.107:3306/homemaking?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false + url: jdbc:mysql://192.168.4.107:3306/charging_pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false type: com.zaxxer.hikari.HikariDataSource # 数据源类型 driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 diff --git a/common/src/main/java/com/hcy/common/entity/setting/DictData.java b/common/src/main/java/com/hcy/common/entity/setting/DictData.java index 81215bf..21b9ff0 100644 --- a/common/src/main/java/com/hcy/common/entity/setting/DictData.java +++ b/common/src/main/java/com/hcy/common/entity/setting/DictData.java @@ -26,5 +26,4 @@ public class DictData implements Serializable { private Long createTime; // 创建时间 private Long updateTime; // 更新时间 private Long deleteTime; // 删除时间 - } diff --git a/common/src/main/java/com/hcy/common/entity/sparePart/SparePart.java b/common/src/main/java/com/hcy/common/entity/sparePart/SparePart.java new file mode 100644 index 0000000..8d4e021 --- /dev/null +++ b/common/src/main/java/com/hcy/common/entity/sparePart/SparePart.java @@ -0,0 +1,31 @@ +package com.hcy.common.entity.sparePart; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.sql.Date; + +/** + * 备件信息实体 + */ +@Data +public class SparePart implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Integer id; // 主键id + private String sparePartsCode; // 备件编码 + private String sparePartsName; // 备件名称 + private Long owningWarehouse; // 所属仓库 + private String specificationsModel; // 规格型号 + private String unit; // 单位 + private Long quantity; // 库存数量 + private Integer isDelete; // 是否删除: [0=否, 1=是] + private Long createTime; // 创建时间 + private Long updateTime; // 更新时间 + private Long deleteTime; // 删除时间 + +} \ No newline at end of file diff --git a/common/src/main/java/com/hcy/common/mapper/pay/DevPayMapper.java b/common/src/main/java/com/hcy/common/mapper/pay/DevPayMapper.java deleted file mode 100644 index c85b8fb..0000000 --- a/common/src/main/java/com/hcy/common/mapper/pay/DevPayMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.hcy.common.mapper.pay; - -import com.hcy.common.core.basics.IBaseMapper; -import com.hcy.common.entity.pay.DevPay; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.springframework.core.annotation.Order; - -/** - * 支付配置Mapper - */ -@Mapper() -@Order(0) -public interface DevPayMapper extends IBaseMapper { - - @Select("Select * from la_dev_pay where pay_way = #{payWay} limit 1") - DevPay getEntityByPayWay(@Param("payWay") Integer payWay); -} diff --git a/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java b/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java new file mode 100644 index 0000000..c389888 --- /dev/null +++ b/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java @@ -0,0 +1,13 @@ +package com.hcy.common.mapper.sparePart; + + +import com.hcy.common.core.basics.IBaseMapper; +import com.hcy.common.entity.sparePart.SparePart; +import org.apache.ibatis.annotations.Mapper; + +/** + * 备件信息Mapper + */ +@Mapper +public interface SparePartMapper extends IBaseMapper { +} diff --git a/front/src/main/java/com/hcy/front/service/system/ISystemDevPayWayService.java b/front/src/main/java/com/hcy/front/service/system/ISystemDevPayWayService.java deleted file mode 100644 index a49cd35..0000000 --- a/front/src/main/java/com/hcy/front/service/system/ISystemDevPayWayService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.hcy.front.service.system; - -import com.hcy.front.vo.system.SystemDevPayWayDetailVo; - -import java.util.List; -import java.util.Map; - -/** - * 支付方式服务接口类 - */ -public interface ISystemDevPayWayService { - - /** - * 支付方式列表 - * - * @author panweiliang - * @return Map - */ - Map list(Integer scene, Integer orderId, String type); - - - -} diff --git a/front/src/main/java/com/hcy/front/service/system/impl/SystemDevPayWayServiceImpl.java b/front/src/main/java/com/hcy/front/service/system/impl/SystemDevPayWayServiceImpl.java deleted file mode 100644 index d9e42d5..0000000 --- a/front/src/main/java/com/hcy/front/service/system/impl/SystemDevPayWayServiceImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.hcy.front.service.system.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.github.yulichang.query.MPJQueryWrapper; -import com.hcy.common.entity.order.Order; -import com.hcy.common.entity.user.User; -import com.hcy.common.entity.way.DevPayWay; -import com.hcy.common.enums.OrderStatusEnum; -import com.hcy.common.enums.PaymentEnum; -import com.hcy.common.mapper.order.OrderMapper; -import com.hcy.common.mapper.user.UserMapper; -import com.hcy.common.mapper.way.DevPayWayMapper; -import com.hcy.common.utils.UrlUtil; -import com.hcy.front.FrontThreadLocal; -import com.hcy.front.service.system.ISystemDevPayWayService; -import com.hcy.front.vo.system.SystemDevPayWayDetailVo; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * 支付方式实现类 - */ -@Service -public class SystemDevPayWayServiceImpl implements ISystemDevPayWayService { - - @Resource - DevPayWayMapper devPayWayMapper; - - @Resource - private UserMapper userMapper; - - @Resource - private OrderMapper orderMapper; - - /** - * 支付方式列表 - * - * @author panweiliang - * @return List - */ - @Override - public Map list(Integer scene, Integer orderId, String type) { - MPJQueryWrapper mpjQueryWrapper = new MPJQueryWrapper() - .selectAll(DevPayWay.class) - .select("pay.name as payName, pay.image as payImage, pay.pay_way as payWay") - .innerJoin("la_dev_pay pay ON pay.id=t.pay_id") - .eq("t.status", "1") - .eq("t.scene", scene) - .orderByDesc(Arrays.asList("t.id")); - if ("recharge".equals(type)){ - mpjQueryWrapper.nested( wq -> wq.ne("pay_id",2)); - } - List list = devPayWayMapper.selectJoinList(SystemDevPayWayDetailVo.class, mpjQueryWrapper); - //场景:1-微信小程序;2-微信公众号;3-H5;4-PC商城;5-APP; - list.forEach(item -> { - item.setPayImage(UrlUtil.toAbsoluteUrl(item.getPayImage())); - }); - - Map map = new LinkedHashMap<>(); - map.put("payWayList", list); - - // 如果是充值订单直接返回支付方式 - if("recharge".equals(type)){ - return map; - } - - // 获取用户余额信息 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(User::getMoney); - lambdaQueryWrapper.eq(User::getId, FrontThreadLocal.getUserId()); - lambdaQueryWrapper.eq(User::getIsDelete,0); - lambdaQueryWrapper.last("limit 1"); - User user = userMapper.selectOne(lambdaQueryWrapper); - //查询预约订单 - LambdaQueryWrapper orderLambdaQueryWrapper = new LambdaQueryWrapper<>(); - orderLambdaQueryWrapper.select(Order::getCancelTime); - orderLambdaQueryWrapper.eq(Order::getId,orderId); - orderLambdaQueryWrapper.eq(Order::getPayStatus, PaymentEnum.UN_PAID.getCode()); - orderLambdaQueryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.WAIT_PAY.getStatus()); - orderLambdaQueryWrapper.eq(Order::getIsDelete,0); - orderLambdaQueryWrapper.last("limit 1"); - Order order = orderMapper.selectOne(orderLambdaQueryWrapper); - Assert.notNull(order, "此订单未处于待支付状态!"); - - // 预约订单返回余额支付和过期时间 - map.put("money",user.getMoney()); - map.put("cancelTime", order.getCancelTime()); - return map; - } -} diff --git a/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-ERROR-2024-07-22_1.log.gz b/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-ERROR-2024-07-22_1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ddb32a997ad04694b69f9078d8e889b371e246f4 GIT binary patch literal 1531 zcmVtnvlDxbR z;#Ry?)or;xuDVV1bfnaz%pzX)9p5d}6B?8o&(Pk%!Gi-7@G%|*Q%u5f#BjjbAR1!A zC-@#8Zp#S`6e^<+?|%O9=FR)RUVr@Q&z9nMdk?xjB_cLNR0u9^-l)`Dj?=2wvFBIO z)0YVm>Qyfo(J+arc>aWoLn_MNMo#k)rY8YSRKywH?n@;|pdO|JcX=NKdH?q9hhJZR z{N<0oU;k!=`sdy6H*dTkM+C=&4Y8nu7-YsBcEkgsaUKydq-qafC%V}}EQ#ZrH@+eY z$%M^5xI-BgMA7g*RU;m52LY9m3%BOu2(S)m=`lNG{FtF0Peed(p&y^#Zry&ijI>K* zIs|GqoQLX+C-EuP#yNU5ty0r=?4kxjc6QWk+4#+ZMMmAZ=GJavWu(Og?_OLPexj|dis|> z8VO3mea_=8b2m*#O0hU2J8Q4Hj;Bo$Nki11wo*Dd(S~6l$e11jHipGB3G3Ip)FzB^ z)dpxqALadp%h~2h93q&6_=GZacXy`^eT>m`A{uak3V`1tMkU-?L{AY=B+V6(FJZ9{ z@1-meWhw_Lu_rb;#=m1QM0(enO`Z4_)3HmYtN~EGO(DDQZ2Z{>h zxz(oUd1Hz5jbGe}7hylZAyGu8lo;5FVK3~(eZt6)3eeXbI*eFp<0PX=PE#wcVJmBr zavct+(nwFp{C&1ws^a;`WHRAG&9r$xCJMHEyn;>X#8UVxS{h>$t!LGUH!+**b#7Ytb2WsdfuQOiOFOGPko?zd}Kc;eHaSQN)Vd zx>?4m?_R2mokDl!3)hSqYhP)eUmP7D<*ftbh@+#-ndPwuo(LXL8kROpG1B;rf;0es z0dd;HIO=cn$-dwx)2+0%R<60ZMij4Jy(Cd~r;LoFU^_gDz+udvSN4CEKn)YcoI#*@ zS1qYHionbUf-^<>IQ4&Ewgv;-)4y%gzqPf;MuY`a>`Z$pNBhpb&d%0W#i=#>UWiGe zc#pF1fe5LPrSFEPk>dBu@dCyeHPIMc_ncq64jxHw&MR_q0>*8WLgR_{?uI6H^qBzy z96*`LR4UBK&Lh>;Q~Am@?7$%uqmEBgfkDm}wZu?qdY8@6a6g;DOwRrBN{Yg;Au@67 z2BIsB6x>GLMhZ4ku#tj|6l|n$JtGAz*m$Z#h13Vk@>-d;Yxw>YLWnMBo1=&>*XgrJ zPf#Kf$NU)ZONSY4tO5TL>OB?0XF-1`)x#~m2aJK>bfRAlsK^=s3) zkV~6qn)7x)O_;y5orUz%vyEq}pY?IB05eBa>^G3^ng_oHjnGeI7_=~qX}5rvc4uBQ z1xi0DXNS#2S&zYWsNh;NyAJyA1`hCqE6}UP{9FVb6nIa+8fR`yH)pZtY%C>f8q0e% zWWF&TS48G}S4h^VT$C)gGU+8yBf*dJzIJLya{7hYnHM!){R>JFjA(FZxYtm67vALs zTuD`zD($hdG-)Mqz1FCmi+Dv!qjQ!WBIye1*^nV^oHH$(!9+4&%ytaMcY&c|g51kY z%lu1EEp6gw6F-~y*~HH#em3#@&lA6_Y@&fZ&s|$K;oGtaTQ*_KCT!Wn|F&$xv1JoB zCbluLjfrhcY-8eUQ8wY&vI+ZoW?#>2q+lZj8!6aG;o3(Ewrs+dP1v#tTQ*_KCT!V+ hEt{~3pH2L1;%5^-oA}wp@Bf(i{R@nSyMEq6003hY<3s=e literal 0 HcmV?d00001 diff --git a/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-ERROR-2024-07-25_1.log.gz b/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-ERROR-2024-07-25_1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..a86c52097bbd873c1a55bc5e1e6077e9b01aaa52 GIT binary patch literal 14934 zcmd732UJt(*Dh{X1Vp3=(#DF^ASfLoBA}umy+{#|CM7gOCyodxRYXKuKoRM^8%PE) zv`|EPjr3lU&_W>jpHRl}cfarc*SdG^THict&32!Yx9sQa_P#E8LQWjm{cmAtz~y3( z=NfKIT?ZMI8=QGNRr0j>VE971a!RCFxHwbGRkfxGbF-UtG_*%-4!rxuIsS+B-HDSf zZ}A$!fAHqM1@VTvzJIi#>+XL^^01Tt$Z1+yaJ0~$2YQF*O@^vAx4}zzJN}5z`OCXFGai$3DGnLg^=^@x6K zkfmM?50)bk1;(mI#8;WXRwM}r7y4B78KCNNdeI#Ogpe>}tt-q=red|j1nr&}5-i2eL?;_eb+>OG@r|guts#+{s*=JX~fp;O}#p zLA>^0rUQ#gx(_kF@6ioUpFrOF`t9mzpX=Z`aTT)|o(Bf2PRxNd-$-^68;ST&+Bs_W zi_<}*-d?A}AFQ=F2Eq`1oob-aNT1HtOrVJz>Ai zua%7MNDgeX@FaKim;$QHaVgIj7wuvPExl5DMUX5cK7~^#Bj7bC8-2-?+8GjBU94>G zhdbs$->`jU$^+s`agXe5G4}$jheje4Q*XEB)ql((y66Lk{r8DStNC&pxlF=EISMF= zr^syPb(B+|*J>tSma;yE-(JVUe#qFb87@@wrnQAUlO?04)WM#V?L?>@rE9IuG1XIa z77STmL!Fy1J6>Co#Fg-Xg)-YhqnN7M2rWu+T0**6gpRy_x0DF8Coe0Of8}Bg$>p3X zTX(sEPW1CRdJ;pUDuw-0@){D#aOawSTj^4@a_YJ8n(^YXO`QM%Jep^*jJ zqt!=wAGh#mde2$@EAqm6+Gu62NHrF`kc@Q8)JgP%pIePk{jEw3 z;^_6}^T_%2T)47NUmH*IarAjks}{#Him$$()HNI9<|~Fne)^D!mJ8i6Ej~vAm4YzX zy8`nYsw|l%BvRT)l#iZvPg9=N#9y%{kT|%)lm>qtaad&}OO8dZ>;gYSqNg zp`vze8nbp4Wf_(f^(EKC)xypqmqp$4OCyh=yzQw0EnQ!-M#YaDsU%G6*$#G-t!oiq zM@C8g=blaot{cn8EL0M#Rn`6ATe3t?JYjsQ5rR|qE76o{Pq&9SwrQ)`Yp6Zk!RO3` z-oeiaB7EX|2)`wD%~|zR!b7kYSWHJ`2d|)+H>DK*fsw|xs3czS?gE#I<9Y*h?p;A$ ziA|Gg7fGulHf~$VJu~3mjKxl#@e@Rag=by2H8H?>H%Jx{R9C4i@bmU9;U44H8mruL^ zx^2x?~h1-7Ky`;zQN?_A;DigX@lJ?dM z=9uufw29*eX)zFt%82@Q`j!@0`YCsibzelVr5tU@<}?mRDC#j~PGa%@`rumlGaCn%O1kMKx|&qeg9V0oTehcAbL3BzvT6y0sIqlzV)5}b zcRz1R5cw{&m+tH$`A z>M{irH}95qvo9{V*Q|PXN;mt#b&6C>{o+_mhiE&>+Z#nH4FrapQEa*FDQg>cJWtF> zc#@}XyoIP{_GpTEsYDy|6V!I5=MOG9nfQw@Eh}4!M~P8wNwR*CmWkV|W)QjgqG}Tl zDcsF>6#e^lAQR42)4++`7}8TWFCTKD+=(>XB7}U!*`A2_v?ve?0?*}HA(3jUM06in zqxxlMlU9`HQpo9jRa=Tn8z~&hHCOH1uEK@}u?&ik^5KQ`Q_?9>`QMi>nIhTRHrHz&pkiUq z%;|Ds)O)=v;>@c)2uGMs!JgqpeK>PsD12Cl3H9Sc_-AYk+snn8TlspOH-%9w+)Ul3 z&%6>xM$n&Xvp@IH7M0>b9_;Wd!HW9xMY@#na@m(8vwjWkHWB85G$OWKq8a3Bu-4aO z>KpkW;UXHW)fO3%mUxi|Hd89yfwHDNyN`!m#REA(NR+%ZeN`JLam5%hJzI> z)>^_ewS7lgRS8;hj};f7-LWbPD4TRH54&xDFbQ(;W9E zkj7@V>sll(f>{Vb@5VmOuJ~#AWa`XCo5{ceH)M^<^6VKa+D)%jOKqEGjz46KE9s7=r)kKG``4*|eeoIihCc}v$$D$6z)p)-Fc^(MFk2rtOc4}CB>8nFu zU!t|vu;k&IXXAm^e;Gyh^w4I-$a5@p#LM2smVYN1xJr5@faXf>EoD7*NEsgPlOM>@ z)Ag`6B0TaO@v0;>IlB_?JgC%x&z3Z1LY>`)9U4)CZ%hL-o?bIfG~C2iAbwDcZ${?0 zD_vM*4;~CRsWO!rc*|K}Y>(}d%<@Z0cQH9s?tkFIbByAF_|=x2ZCwjW_mO+2t`v|zU(bDld^t&OwxwV2D% zTett-8oAq}T1&m{_NX9|7T#FfVp zbo<-0^n4~_@LkxO^L?_8fgQO&__A(Jyd?$Pcd1N}c)!(yW^sGS*DxH9pv;fq#a%Om zJJaoTOY0eMBV7)qqjTiDes-}1j79Q7X#t2H$YF;XneHo4! zwUONBbErGpG&`1BO1^#sJ!}nD~ymVCN1k}Amzwi%rG!yM7u0l znSfL`p?sDV4KwEeu|AYV=;l?x1UEqL?53TTKKBA9SMRmg(W|fGzRStYKwXa3RHqj9 zoo(}z8vBOaQt-SbF)aBJHn6n9-O0bo7o3@{jF0EIE?E7@Qm}(Pa744R{IN^a_pug+ z`k1wT*_bti!Frw1dajJ2d)FnA;H-MYr^!{-H!L?)S~OfcIe!VP+zph5>F^h1C5!ib zdrTTg-PA-hn8(+16TdPsgXxGVyG_zCg(GEsJx?62c`ot?-HBSwv&M|aULG{lSE@+{ ze!uf_|L19-2yun|M;8{YT-bYdCWRv_ZSuG`@ehAnJ;p0PWwLAmGw>s(%sfJFcM?@) zT*|L$-`jv^fo-IL7|d?6o!(h?_LIQQPO|Q>?e3Af>%Vu=er0;+_kbbahVBcG?eFaD zLYJZ`_tWsWl*x3dT|v}jfOc+``g+p)dJ3%d?yg$-gc-a)CJh96y_P~XeiOg5Hn4@j zRN=1|=m0YEgJ1q_>92ioJG|Ka{mO*WV9U5@?*87|P2^T4KK{Knbqk=?$0{w5fta$7 zAPAbkfO-AIvrOaC^029xsO`##~X5V1ye zt2TIVrY zNvjja?JV!)8t|toaTnDm&?!@}qV)}eN?X#BFL64AceTadP0|LIWU(4$LUVn+NOfBR z(p9Kc%r@wWX$_ggILeUzkp00>BeqgK?40K9mo4A0Mp`gi^4I7a6;)Zncqs6MG2msl zLDnf5Moy_l%S4;6l|Kt<$D%sYNI)y-!uQvJTayoAzC#5Be=>H%vX8(EDs-AGhLLez z?P~`=n@O@PMOX0?v$Ed_j)Pno*V28R49S{#y`jTbDKkd(5B-EfD?bHY zpzwvR5qeT4mj^Il&KodEn8hdJ1&Z@0uFJsxw#TPv#vk%!C0j{l(CC(_!-wn6NmeQ+z<_wa!)2GK}XWU zs^oFZg^%8L8}Q-p$Z;<0x+nM&{1=S4aN{0$pAs*Zu``FfkIy#Zbd7|PD*vQokWyEb z_pG)47C+02Vh8i7F+Ox0z8T}JB{$}gm3HEs9mM@Ym9Q~qo=xT_XVS6$yJ@P2L`z5y zKX+$B?ulM__j&lIi&;aOTaZ%&7hXmyCp<<*wW7j~%wGTSQLzgFpoR8nQ2$40I@f%JVc!5>Eo(7@80lnjfLZB!KbyH*mU2+|NY3lS^qZ^^cgSE|L@k`c^54W zY;b7iP>JF~pwAQc6G4OLgZlOC)6v2G*6t;cTMG|mI!^&F|2vV}Ndvr9I}1!EF@6!D zC^>#gsuO9hD5Tqolw&ICvHrOB=|0|*@-tbEEoH5QBY%w`YLj|oe(W+l5Blk39LVKl zN|I5HkL758Gk)Pv(>Lv7{|QX8=tdelq2An24sOzM==*=*n@&jT(d45}U#TzH@R$RE zT=;02@!|tC3?)i-2j3hYKj?WUQg-l8Z;?{3;%~6jW*zS>QuvR}{9kTS9N6O1qL*?^b6m9Ej>&Ts-=~b; zW1cNDxAxd5LG|*FX_jPDkZs(j_cAFtVXD z1{b~;u?4$bas1?VCD8DUbkvLcdJv{7MUAd6rjGDOG^OCvWp~9^la?o(saFabo@g<( zCop;;=vJ*KQ)*{J{m^Vx=TY-J{+D)Czu;r3jnD!7bJ;%__}&K5nyFWLdAHHjaQ}`D zJ1TyE254}b>XT;b!8P1!M~+BDo^Yg7y2U1;af?kc?6h*K2>|&Y_qO#$ zc@VhI?RhX|;wY`hHI3JN*V7R+X8AtED1Phl=<6-rsn(XWCP{vogZ8iB3@!NAh!0m* zlS12C_;|uWx$9nhC+t*PFHmwWnW8Wu8}7oy&HeMK(I>s^v<{3~?LzA53Azw0(N_15 zNPD;5*6{uF>GtFA+}!Klq+0t<5G+eyN8FyFCQ*!*(v~LLmzCeU6>~h%zqZ}uBN6g4 ztj%j-@()rnxR(J7B6}`X%~uuh+X}@f29TUxe?OfHptVO@3~`ecj!(Br7z*=!E2agq zT0UwE=;GS-h^Q%zj4&Q4cp^<>jp(ql_u5wDlsY%6p|F*_nP0}e*7q1xDfn5mld)Ky#ejl-X;Rmu z2IaGaA44% zO1%=AyziXnm8jS{W%Kr& zTC2RC#c;}t7|$>&lRVd2V$>;qOXv;|To#6#4zaf534E>UAV$L2XKjuc+aB&f z4GuApp5{Fkh#I%BEsUuZFL{5 z?OhI?DZ#dVXNjHL0>WPK&Qobe$h7m9vu|s_rM$suL)qpJ7CoOaXH?547 zs5pa2ukARj^fc5Y+}%{lQJ5#=by?le9T}#W#nI`(N!HyPWUqw0Ee%RJCjza0*20|* zhM^}~e#m6)=qgb~iOE+(&oK=!>*84BSDqQbr1DrFobS-{vGgHUAX+LKxupkkZN04s z4&s)hW($WxgJgO`Le_a5?U#C5OUHp5>=E=@&I8J3><@dF!z$px)ivtXx8kagY#Lv^ zCekx;_*+c36}hGyi6E$zIX8{}Y%p3)~rBzL8q^;Ue5Uu%D zU}KP|rGF{Z-LYK3b(jr4Zu})@?Pm$;RuQtI1p9Oz<(KjmPj+flq&RvV)SYlvr}bw& zCPZh*RxDy;rk}_f_+s9;quPmSd+^aSk#`)<&konpzpO2$;j;xv)YXpWZk`R!+UQ&h z$f+AD0WlA3^(DhrW7` zn|VC_L_puWX_%?uH5cMu*B)3M$-m-J5Mi-!Fe`cSZS&+Lu$h@+GV;W3)) z%b`JwGk43P1Wun4j&4DEtYO%B*CrU6n7-obXtoFZ($Ed}Q$7bvXKZ)Jdd zzJOM-PPUUjnp0y{i-r$W9jxT(Wb^XtW8HT@4nb;Sex9`$?5dRWpYtg?i zphhM7_c=P$qD{>DKR_=jGIl_(iY&aG(g?BY=bxs6PxpKMq3EG|C8cs&$%Pl~JkXBP zg@KmzD!k~oHw5kUyYsWn3~Dt@9iPx+&V6}vU+H|~4Wj%>exsv>bng8P*`R(C>WneC0EzB~bMP{; zn}9mfo5#)Qu9W=S0SGvX5oHZ(5z$Y537bgZPlHhvysqlq9LW;Ty+xOTZqJ^mLjK4-cz}wvWYntzUguiU{fUE3IEBvxsB@@4@crStyf>$ ziS|6nZJdCQ07S-873zSJ9qy7#Zrc6X{X)h@=*^A$@u$<)G^t!kb*@ooM1+DW3zWN; zD-#b=)q20xSLFhSejVQTj`C9t=UPel+0{7`{t3OS`Xszr&H(a!_`qUgCC{0Ri_3oc zEJb{*ui65f;SU2@Y0q&O}z#-u!$sv)Y=#0D2YQ3Py23`wzE8Szccn7$>Et z=RXK9+WICQ>mWKX?$Vb3z$(5OPztF7yl7Wgr-i;hN-nzzspeW?J;Cwi!7D8vK70M% zWlk4w>Ws#9XNL_g+ItLlAE2rhD6iXttbhLF3Sjppfbf!jD$Fxp!lpS&ycrw|6Qw+9 zIT&|%gVz;y=kuGtw#|r-kWyk=>Y9JU#VWA%;?1dqSShiz+3Kd)STWa2ijiVK497}Q z9q00^q7S$=&Sw3=J~bPL5#VADPc+)lKhArO)eqpwgdTJTm=R|3_ddy(-6h zaX|;kSxi{5nQble+l;H1h*z*G3IPz8gf3oWqfZp^N{n|PL=^jks-)6mwfdJUKA8vq zh14A?zw{PWRr;bX>2H|MgCcK^U$|3%GKWpQsS4RJNNr#gDReBdqSRY%_H7kqzpVdFN)qS8*yzuPE6*>&otLm!% z6Mp4iP(vpKkKOJ~2$o_=o4wnV@j=TOAXBSAu{uMNN@nWwqTYqNg}$7XA@n2pn(q7? z_VkZx_XVTn@#mPIqUChL{<}gTSokaX)UH+;r^sjoz53S#H6I3I?)6c@_r9?HUSwVL zwQ>$~C%ySE7mw-DIl9GNy;g4Sg#H;^&En6oI-yLL%VwmB*8Uvq^KvOAxkg2@b(V?8 zOuokFB}T4RmmRl1M{fy7Ghf#}se#%kz=ahnNB##d-RM|M^{!x1I%^C&zN?wEd^{m6!~D~whLEmQYnf^f zV4hjE&my%!In^*}XaalMA7L)RMKvp>KOIm#km z|2$>t>cL#NLY(x>gR95=OvE3F!y#*o^jFFbpUq0F%NQ=KPvU@-@^_a*xtqL3QdcN2mAl}m{`@!c z04nD^&7C9!y1f3MIAE!>H&o!5JMMkN@4=h@>~`P5e+I8VCiqiGE^057^Cll2iQziw zw3Aau3N=dsK!a1~3pAf(Y33|6YX{p0R~r|^hg0opxBc{OCwi$q=-3&~G--_vp{LSAz8P9gFiYlt=ma5x35? zF|`qhmf>&iaQ!J&gD<=7dism-=RMpvGHy^{s|nYuZ&28{XL!3={ zuD+jp=yZCgAoKkcgd)5F4&hLoZs`BQA)New#34d6r^lLK>FKB~H49Sh0$p0!MfD0CWn*KDmv`1~06mzv@&>^Fp?@^xpE(buOIiGhn zGfhlFfA{^=hSJ_%7R1b}FcuDu#4GpgvwQUm3d}9gb;>|j!yzF4Ui%tL#s!`c($(~3 z#_*!eZ#xk@;?lMZdeKyv>0JC2L3YY8=naP2eV5cv)MuUV+jgaNvCcjPkILFdl z(o}hTC4Wok8>f2)E`1MY^u|)>%4KMUmb%X^2`z~n%E(jt%y6Jt+?bK%mc$q>d*zAl~fc0&u7HmZ(J3InhX&fKr&ns#u_6LKr%#N++(N;b%5>CK01C3hk!4uF~g*h60gC& z?k;ZB_gaX`U@!}?hTH45*;kfpB7$_ZwKe&_gpB&ujAN=H_A9bob&C&W=vT7!^mWVY z7Gjqu)1A-Zf8BpfeDq3cL~~4I50`W6#$LwL8BV^$&`5NdHPgf}IRgC)Q?4STKht6} z@j>Q`UM1BjtNd2wg|%!g!I{w<@?(<^XD0(Z&Gy9bE7`GXeG%5sqZWH2CRd-P?nOby zDGT5!@CjZNoI1*ecp;)YqX$3&{R5Jl-Rq^Fqno)}ci$52*zEjK404QvW|;1qM=&l_ zZQx>^R%jZV`Zc(@YzlJl6^?oAu1ietcsOj{msxtFzRrMUlm`QT53{eZ-l)e%OaRK7 z6}bSRDVyr?HZy7updfAIVCzHkCc$aU>U?nOOJRq@0nBZlEI+Brm2^K9GYx%a)&Qly zMeo4F-jKB{MUd(cnnY7p#;C$RCp&s-Y@-h$&}_fY^&Z ziG>Jad$ohEVfB#(k#tH(z+`MMi*{=jtUY+f=3nsG9yk$)KD+u?FU!k)vC$|2n4Y1lp({BzZi^}7q7B}Ze9FAFpwnX?ud{HH^;i7gOVzuC19rNG zPjGSoCpb=^V1yeh%nTN@wHc=Nr?(uGneY%Eo@JOqdpesWoZS~;4b5C(N*3+<*I9Q3 zbS5*}M(`XErOFoVy+D+nn|qjCAaKVb+K&n?!R_!=7U1yV(ELuf6AdsXc6yAjPE6V% zV%NpcRHp+N1DuYx(U||O%(23Cjp@gKa9HcS`cv?*!Lh;#xY-|=oA0R#)hF+E?IY@K zW(bwB5Wq$GcAT~?)gk%xm{i^&Bfx{(j&%K3jD=c%DDC3tDKou`8((Z1ibe=zNM%U5 z>j{xxzhf-k0KpCeZe%XIhstkg4G^r69*3iiHD>Q)!g#t+p@Hc8wv#6%h#Rep`0)Z3%pevds>|V)N zIW2>N^WVhY#{YR*{XD$g*88Q$NgVSi-#4vS)&eg%LvQbR_+?0;)nCa5qzJ5Ab)|#;>Rm`6`V%Xs}= z^izkqe=8y%(Bka1Ggtc;4AM@wp*gmze+$T(N=B&)AoTtYNZLAK6oDQ!%l?rE01}*vEhsb}yJxAS_{#c{#9^vkDIIGk_NW3D0S**Y>)sBgUZ}9( z@#YCQwN~J)8_)|-Wy$ksk$sn{!Uz_C+bHeCJ;?E8d_CQEq_=9Hs*^aQ{$nT4!wLL< z1pr^-{=@C?-$IcZn65899JMpUW>**VZpl)U*Tmwzr)p1Ihjc<<7c7qmkulht%@Xg~ zBK81szQ&F1ebOLG&09diMi%&3Tx1XS0Zc>|2&5;(vyR3VwYCftshx+1NNoE5o%MH< z|3w#<A9|$nHHe z%HG&=6Yzz$>0&u5L%Z%J2HXTtZNB85ac8l&epuzBzps6Q&iP%M-g^i73hufWb-*PZ z-aV+_%M|`5b`S~z{BzH}VoLwK^=hi}q!aa3b zN6EiSm~N_J{E!lo?|(!vmhpFOPX3GjRiTq1KKt+1#|7ZJSWL@6gXw>SgAGJKP4V(2 zMW0q*%%ye|Z{wokT;01ylkTu9gi!DjrwL(~>n`p=)hM)HLY%!22vUfBX6*-RTLI)~ ztbWi7$oxtEsV@N@li7r0x>2`e$He}fcvLDM?<}?A7bp$bsf|DqqSnS=S%+F1ftcE@ zjcY(RG5r|mCUjoyh9OWJc`)+tsme}8_-AdTrPfB;Ux|=f8-Z@(kP$WJ|LfZL%K8JL zTOt>NIy2fxt&Hw^ny#9zi@AndOnet@aHiyA=E#C?9{YG5g4?LOqWGR#6oFoX5H`U< z?Ik$o9xjI&D@+U)pKeQdwm1xb1|-kQcAj62*G?P85g8@3-+1lxU-Lg$1gMFt%Zv_a z$ACUgr2FFm3%%2I{M%G~(ck0}5P;^<;RYH1N4OS3FVJK0#Q)MoME{?35wE5eqtC;| z{=KTGX`qn>oQ_&zn}Utc!y^ajsQm-AyZ@D-f$pAKCwIGhUut*XOYQE>cRUK{?srQh zMqZbi(KVm#VfFLpSsH|cB+@J-W8_{lLWPf5JoHa z1?0BXBGAW&)O{-06RLVSw}F-(I935ql|`A`^@9!pVSO%Zg^GCd8HpI(dHL)B)z(Gm z+FWh>^oBxS2P|J}CgLFW$4Kv#m!~FzfjBk?mSPNhs01KZme^7#Y^sKrebh zf6Rq;7l|D4PHCOKP7=Y87u%<>vYzm~sj*cI1+yp^?f|dOznKYJ0RF|qwDPu@MM`18 zBjafr!~0fvuutJriU=vYV{y@%$88N%TDh_cc74}?w1cV-vlW*~V~1z@pr%uX?|AzM zxH_GN2bbeJ)W4K*X_n*!h1J#eTUok$yU$h>RD6inQ@H2CJ9>6x(ug}d$bjrB9_KNZ z73E|Bi>9w3C?K{%g8vHEMR~h)()PTj)zFUQzcvj6>*2FHY;rqn%a_rIi>uMnZ?~4ylnwiJ`l@ySo{X6cA~Ua42b|VF+mf0qGpN%QO7m z_nhxN-}%;Iu@>{kv-jHZ>^;wQ-xsuT*eL({K?Eo}Q4XeW_&(kKOL+8Jl3VR?C5VUQ`fq<@6?1=v(_}d!$Q?5Hdg0D;V|M# zUFveJi=Y(`D0rWq@0aRbbjk~A@FHSzd65n|=(VvCS8VeEFfS?QlDVW;ur*x5OdjkU zE890}rr;Yj@B2?T{+52dJ8}xNuBLOp-F2tv+ks8E@SiiSDRRV@xa{H$cZSV@V){)W zv)rKWw)jam55#;MC#}RY4(aJLU&A%!%H{Vb*FXMjulJ76to_;e^GU$I^3p{}UH(?2 zVs@8rYV+Wt63owWrdMU9@x8KQQ(FVx%x;vBTFc^I@bq0};?%YV^*$}lA&odSRfVAD zXcFyw)6BC2Z#(AaRiiNA;8G5yO$8(`w>L)1rJ&0NV6^RUPB%eDp!MObU2C?yN09Af z#9GWn-<$ z>?>!tuL%s_G~}L7M;5=xiqr_I7IV?2i16W^x|S84X+)3fl`mzUdmngav2j?k2!{FfyejMoNS zikq@{uT+Aj&AP{al(D$sWNx*5G*9^?Xdst&mup!rfM>;%>-X%Iz?Is!yK;6cL;E@F z!SP1mnJywCg2E=Z0{E;j`$Al-#}w^vNhh%6QO`@q5$Us-}Q-URRKO3GU>NmlIG zFPSB7!@H+)h-OcKIX3Z4tCIa*$t*sCNRA4dFZ#ydjXX}bw%*AtnJ7dVsJ+jqwj z1>G}8PG12x5~`P{$nvQmA?rSQnjy5jL9Ci`G`|M#VXDkOxhwY#&^%4Akofvt zU!isK#GfzS&kI3yHcM*sK2n@UG$=hG(v)pY{?@?XW2=eH6>qh2miYHddVR*q#reXo zwlc@Hf_d+#m-bU^x*y*%en>nIEaJyEqU!K*Jvu!yzx4L9TEns+d3SB1=WvJl1@Fg) zvB@cn_b=@Ri6cqWLGOEp_k*ClV;k~SIzf{&4$Sv zjTP}=(Y!L2R8Iq$wr)og~_d7|x(kQ}21X8Kji}(wsoBf?kp4hzg(hsj+@6Thh0n zJn@zz+K4)D#UTzu#SVyNg=68=&iv4F)Yg{pW#w*EoB$K*01sn!Q1Y-_|HF^XTHYu3 zMM}g?19qgGw1y3VVl~g}JLxF(EmWFDF_b?zPPjh{Q>`4jOL>FfkmDS_B-=7S0Q4X)7 z6VYDZ>Ey@!!p@31Z>R{twtLC%@U18N?QRW4-PAH0i0a;RZ&WZolY%@F=e(Dhn9udR z_ay8M{nql%R2v+(q}MLYG_Q|1&h}jI!;qKk7T(a?kAEF6*Oi|WE-h*pJuxAdCHY=R z_J+(PAKj!Vl@EJS=IoX}twYVVE+0J~y)bdrH5afzMHm9=Ncc(3P(b&LZa)PZKlup} zCI~wO6n%V94i}(%CV3Z6dbyWc+#vnyk^+x7T#{5qp>SbPI2>4kNPfZvC8QV(B?MpL zn%gX3=K$p}V02yhSkiRQ7=XvHH>5oZP)9}xAp;nSZjNIgE*?XK+;ehIq$H{2F9w@j zY8agy^aAj>2MTLCMJz&S83XbFU_XVL%Ma~QxM2XLZ554_S^yVR?a5p`AsEJK>^3V$ zo;<)`3m}4qe;%=G;19s`!)0|T3R3AJxlt&MpY%6o(!K)&=Yob=PdX;DItB?62|+ z!jfdky)-eqg6>lBz|UdsQqjP8xt3t}RF!LblbiT8pmo1^%>JLZ*bA}B>0pW3X=N1f zXVFnzY+hi@30+k{u)-jD@UJ4AesjF?9A&7nJ0Q#xsO}uaWvu{pmg)ONT~(qwp~YxM z$gsxCfw^V{0zELrONl`1r}53cCxhIA2gv=nTL!sp{@hSV!s1y(IwHN@^IxqVHHc-* z?tkok1qJ{bXLCP5>5t|KvcGiB zX*c=z0oW*BzE=Gf;T=AXj5)4OibVhsH>Lu@F}SCToUorAr;54{rH=+j&OBZ$>dz&Z z&QuW1%$q6X_!^?;ql-s8`l%A}ePLy_8h=N>zTNgcU>rKLSTZeo&hG&qJfh; z1LU-HP;MsV^&j8n?6dU9u~4PMl@C{75WQ%@_{0nM6d54t^Om$|t*|tBbv-br%FQFUof=fb>AkQwQ9k?qzr<-7p=@@U9R|27 zlc7zg?zvQsMF!neEUoCu4eDVGh;q8%0z{T9&-&vYnkKPXdnc z%@g@@Q)}!s-utt$&4M6Q#;W%jF4a$ID@WKPRf3U@x)_Z9%y5jkCz) z`p(Gd8O$WTyf4t-^wB90Z@7@72LRI9ek5}x3!MyOFW-54eCHn6$1GgL#RS36oUhXf z2q7ob?^MivIIHM~5rG43kyy!2f(4g*m+gb#YP~eME8%ezH3KNUcI8LZC(0DY0 zF3CuUld1?P|nF1Fy7&WrUIpn#yuGv+_Ii%Wg8eRAk|&w=BKgh`-M z+Rvg4G87_9ZS-%y*VU6y;{n(ewfl(VDb1oR#`IqFqtH!YFy6F0p#!54%R9Bk6B>v# zq5^TOekOXF&X_<1W7BpxrQHqi+AJZ9vDF9YGSD`V${37No>>@FsGg}L`MewEQk$!U zqNg)s%1|KH3ennb4nN=wl@ST`tOGH+Yi-Znf5C^Z!4+%PWe0J;y`&XpJCREql@CEg%;BBvVi7$A`=*v$fCL$I8r?fu#> z5-!(hE!{Ab-j!$G*$3r+?ch`*V(CTu&&O`PZh#KBMWUSL(JdG z`vhG-T{A3{UgTurO9F}Hfl8^*8RQs4fne{Ca+m=lGXwgRpAKR6;6HiK_jy9y(TSy? zUviz%VDM-n^odd57SPtfw+_si+K(^S;xj@dVZ)5yB4wOXITz>?7VnW8&czntpfD(t zCU(dr18pMSP!PJL3lS*MAulLb2=X|1c^n0$UHe=$J~N61$i=gWS<4Y4UyYLAA)^~o zef5Hm^T$Vri93ahbKti{)}TzEJAl5WLvA!#;oGDRx{XfWrVAbp@hGvK9sDee5O9j-dk?l*xteNuAm=6L1KG42j6;? zUs}%9m!(rWcka9R&|MMO`E}9OTP!t3WyrPhL*JZM&G>248J5`63F4N(%G3=37Be9( zHF1b$&ieM6R8Io`86r2&{9W_IyofT)B~uC3)rMSCqa2pH0N?}?6fe4m8f=-_ElpS> zHs9nL0bAZvrreIp;ng)S+WH2*S#5o&@_=^_w#CCPcMQ|p?&T4od}`HoKi|+y{;XU>A*$DQ-KZM65b*r_Pm3CB7ar5E5TQyvJ4G4N_0Gfs*uuuPZSUEmenfy^e zq`B2kfbg@s_G)WNjUj!h0^M(KPA$pan1g(@CLw!8m2n)gq(#6GaBK_#x9;%$mWMfj zN7;FfKN1~TPA*hFQ1#8J=Y5zHRMbB=2<#v$Niq4ggP#0=RpX?`R*$h-!~67fVB1q) zc6TVOceT*s^hoxR-6ocP^>R=W{J-cn<(2U&Aa_$)RbDt2m>xLJ2>)B6bYGyqLKN{W zo9Ds8*LGae3t`;ahdlC7n>Oq6v*q9|@I^kRZG*TWOV9-DF4? z9c~LS44Y?}qEoIDHv50j%!xQ@GSEiQi}4DC9|c9X{@WPMrB^l=5JAV&SsWF3D zUN2*E;Hvvi7bn$zH+pL>sObZSmIGK96PpgtdR%THXHkYDirm8OTGd%lTk zL8c+i$&sZS*S4U`gZb;{y<{H>lCZ||EeZ>C;8){;WJZfZq;vOoDxnx&-(KQbehawg z=jW(c@Gj&3_}i+`abop7MY;QzOU4G&=AV58L$69sx*O-O@N_6c?dC+v%-NdHiavIe zG241`3yRMzayjJ>pX#H5nt2@x%EgIoGA&c8J4DEeD;fUG+P`Npkj>pOg}b&_E5Q7`=7AXPE>wx)N@3W6a!{%fp!3S(6AJDL1X|#i*rX z&5X1!M}KINb_r;$AT|?ZsbSb9vRXy10qJ|vpS!B(J8uQ|s4D_(g=POcME$T*8YEle zR30IpF(#$WbTFSdH49)eWi+RmnXSNNXrm}i(W#VE9=Y|uUhL``x0o{|C*W-&f_>@g zLsvkhU)!grGoKUb7Rv!}Lcj31Ct6}g0}G<{6!ftD@SrI!zoniMLVpqFZ=r>MbOT4H z$hdx_MsbJ+?KK~nuv5~*eZ&Mu@Ug+$@pb#b$ubR#RfQ;w;Ka2rZ&9Ox{(Y>TlqQm< zGDwnIpX&udqLO8Z7nw&;7-QB2pJ|{l#B8EK(2zS}?|Ou&=dq6v6|!9|gBlM^i8e>F zg&j@^h#ENnJp4F-IQC*CQyE2J)!djTJGt&%1UVSWXGF|qxsGSY7P;7 zjP-*31u7k5&UiR57d2`mIt4m{onkJnR ze!IwAk%I!2ah7Zhc?}|<6NKR**YgHeX%68E(A7U5ZP4kUJq#+@3^LiqN;3ndlEkt2 z284`Y5Q71d=k`L~QFkl>zdg75Lpa5VyXZ=PB!af^kSJ8k0M|*}v#nodV6hgw{cn=8R12Vg>I+?eze z*xsZt5mS5|uE6**w3@gbG@yc@~$KKi=^#dK=51vmtoLJT&B2q?Q=k zbxPnufCy<1(?*L(t!b)7&_5sq{RYtcK`IFZ59(Xsq5!R4N0Woiu~-)y=o=Nfh*_aJsj4mPpW%U=M4K@;f~L-aM?$^bOPOmM#2M_h3zOz&AR$y_2uTL{+ylPM@3b;Cu#j===C zHrusjph+I?-)IF|`O1Z!Y>`Do^UL~;y*m5KF%bh8xSGh+$l3S{Cg;6gj;3JtCQY{W ziT&4MJz*GjWRX8rUsIHf9`amIA?A&`Y)-;49ylL*vdhH(IH&KEPGfx;IB5%4Jm3!o zf}N;c!%!N)nPKY(C^FEgM-&9o^C2m3WP%!rg2JQRjBA{jIwRc6AuG{@;9=_;MU=O7 z?sq91k~Zn*3G7Bc6M?&kqbGtRLRM2xqJfMo0;NfGYX+pYVK>3u5X(RNdGuLl z3JXO)C8nvyh5{tE%tM`4_O#F?p)7*0k{-!*yul0!lpso3kwz4T5%MSVL?1`ED}zP+ z(Jgd53*Trrp)y$UOon=!&q47KT6&W&N26Xfv~o+bV!G=E77!~q=Zjric0gI z?Eg+0kER0`^@C~rf>UICYEwe|Kg$v)4v-_C3tee*+--a~V>r7RArQIz{!+4}1_r#7FT3nsPjMqwHvVf#GO6{&EAit@C@Jmz%a1F^L z2W`=bnkyqg$h|6eGI-z7?mM?b0`U?OJ3IQi>%PYt5Wi+Hqa%k{VjJ`YpSXje@=;uL ze+-bE1V9&hva_#6DcB7gWZ8W2NfgxY{>`&~?dv2R*k6qXl>vTKl^c$Qk{mu+T^N7@ zhNcUxVv|GqeAK9Z%!2%=nmZg(kr4M|e1TmOIPNr?=&AV2WX=M4MVKwA(>MMoWFZ;C zq+!qY4<8)r;qHN)zGwGqXP{OW_s`w135rx4Yg07hj$eZqwGkHKSU7m|Be1KPm%P7H zEUww+iRxS5KotdFpX~=~MHQ-*`QaAZV(kN986N1-q zkdjICh(&N3c}KxeVOac;;0ku6IpjO;3O2fhK{`nxc_J$E>8C_|9M6D?|=?=@#D6jj18Y41s`LLO87~e#9Kz4l;SstpTd$N+!toX*3Ixa z#370d5=uH{YC|#qm6RoC&q__hn`7>qNJ6| ze-<4er!u$v5gjkZ1I13-v-^V!_YZxf+iWHIMJd4B?ago8K#=|3gi4 zPOaeKLBBg+EU2lx{0vC^RBUvjOf6^3P+a?3R5^ibv`2WPadyw0rh50#FC;4_J8i@M zbwXX0Vd0k34uNmm#=<4-XwT++s&5xirF))GmD@!d)EJ0tHAKV)OI+_8yt2*LIJ3+n zeD1d!P?l8JxYKC^d08Sq*iEbG4|i!i9f=a|RB$inXSgg(cxnk>zVJIA?GgCC-=@{t z-_MaqT{nox?+q2n@xhwA{*<}n!m99aGxqmrw)1Yo=;2c0VK3+*f5GCy{%X}(N6Xti z&&tQZ$WA2rX87qoMWw~+in*cO+^stYd?_&DDig_90Gg@`&%%{!%VUH{4aZ^uv%soiwLV2PV`CB8|iJWTmn|TnYc5%>psYkv{tf%^=Tk!*2V$q=rxPT&?I@ zPP=iciMUfQgTH-FOCcuU%*<+YiZHPWAL7CblbkA^hdaJVT+Z8?6HREeZ06T-a8g=L z8GXk(-%6++9dGOBqMJQN>}1#%bE$#RIn&affp==;riWk)DmG*fDi+S;_$xso`xb;f z>q*(1`#IaW)6>C`0_T4t7Tyk&_k({Rr=YNpOZ~Z^w~*jA-okExzRJ}2L*i~WH5R{D zlaVq<(#gJdO0M=AI5S_7%gNH^vymp9Avj`7m;I%Q`nKsDd)aug@Gl9`B{6?tL0;F6 zj*n5!-R&YvM}snoZppwoKQ}*RK6o7u>-*k_r~MZG1x?do3Pz$jniI#u2R2!rt;q(K zt166RBPC7R_d@YJsD_qnAeWrrjV(VD3c!4>IEqQo(M{vDv>Q-GsgN^CX^lvGrPbB$ z>y`DKoYZx@NP1^Z?DJ1o7SBp5UoY&stKAz;H;C=}ZT?_soycpAn3}aQJ9jTCROs3z z6NBA34NcJwk>pi>(tG)>6E~4y4}~IPjyDn3EYMChco+-e=CDd51{0&)mT{_x5Ki!y?iS_eurft{qGbxbMEqyiERmRkl zpHCYdFm+_W;NnK4$ZfqOUL)o3!Zx`ClFR>46sy#`WuvtiAe3TVU6B1rU~bH&w`pN% zvA(5Jny}`m%AQHwL*A}aQk^X1z1=k|)GkUmz~qU*b^`}npK`%BYYwyPj_`nbTf+Rv zKF$mc(+{GG)j|Jmwlpscvu?~yi7ySne{coIws=Zh36LcT* zWK&wVFnz1?>+e>(E!7wQW0`d#@Qxbiz*$ju-1+v#!QSwF)3KU^AkMhl;%IMqz4ngI zp}Z|RaZv(onx@i5ltaTYWi3C(EG$lAP}g+_EEL6|GIeC`>3FH~?d9eXo?>v@kEG%7O3EVDRWEKhPiPno_^9jwaqoYkj| z!v@m;9UoTG10OJC$sF0V9=;tYzpkBv6xh0bz(e~rpx%suGP`$K)3Yd zk8JLRL*=Wx4$wsJGkEq>n{2p!>&>|7cY1=-n}GDrbJ7o##|CNIO}R-PnT90C{htt* z!d13{EqzlL6#2)z%jypOaNSRZX7`TOaTB~@Cke9r_1?@)YJ5p4H`iB^!ji;srAh2} z@++Vv=t() z_~pBFOg%D|@7w>Iu^dG6x!&o=ck}Y0+k`>> zN<}Z|pi0ZZ=%k@S0$vMV-xZ{-tth1_88(CqN$G$%vLE-b!g&iazr0Z(jy`zM_(k8UtfwtTb^Yfsn!{<~X2m<#a5Le+s6N zM}S(j@Djo`2Kq2yJ{C;A7?SDubmsOD6neOv&jn5{60JT9e7EGKPgp|9A!3YKrOP2= zi1~w((;A$dG7_A;>7Tm3IVy%H`G{X~PQgg9l5t5!qLqwu@Q9e?z<{OXfa}H6U$q3- zU~bM@dIoa@#bYsq+o9y(G@>2k5t1h$naY#Q7V1rb(+yjA;!3eU087EB4!3remeDSx219kN z*f1!dML`kuk%_!;UGztqdR%EENuv|F#-oOKt~ryVN1D%lAqSvSv!zp0By*vpSn$&V z(0}}5OmWKKvX)or`$P}G8pw7CR_G$1okfAEPNcdZVd@GH*WDRXgJ^!AZ!z(k%Z!p! zgP;2XIMcAzFGvAEu3iV)#28{xz`x_GjGxg#qZ2FRC2jJH;{K>na6!+Ak|!>d(#Mc5 zQ4NYO1Fmgt$~G7ZU>h~+^m0(f#Lu=`B~qa@x%jlSMk^uzbo8U-31itj^dqQ8MK?Fm z8g~gCd%^_Q6llW7-Iurht#J_@%d91yFola+C3=9IP(Iy^fU1v9j@YB8l!Ou`r3fI? z_ld-&&kO2NWSO<;{Ma{fkFRiIa>A&lqT;`95$YaTN>Hu*LXYN+|FLD|uwnD{OQyW` zElNtyG)p4CiLU7D598C4fbuDqXMO)u;xX%i{RYZ&hFC&3FLWajKI zmyB-~JPmrIj_l&PCXAdFt&dHT&nTth466V< zRN!A#((xv;O3E(gh=x6)!^01M(yS^i_+I~y>Q68#nTTC<{6l2hr*Oc;ECUqaodLz2 zQn@yfb1^iFAkVT2nR`F>CdpI4m@GK?PnYzD&;J~Zm4%6*t91R$OO#^B=qKrp$8_9? z1+o3eP_CI|jhqI-3JfCuP!!0|rr?pHE+$|iHIfK%@aUQbr76@cfNzLkH_^L(6;ebp+-?v8xhA#K1&?oFWyX0dmQSC+?_>F~XluJ^_S2lujFC#0;5P zi8`d)c+4i!C4v0L3#j!_QsijH6U7-7ey>onbi<5jT3SZ1$36J^7-PZrK?IBm78x`n;DoXe@N*}tsyRZVwakS! zaRBJZE~8`E0yh*`(9li34X^#OB;6;uIdH<6B({r<;D!HAr;PuJ3&YJ=IbmBEM}>2$ zn(VR;dF%iFM$B#u(Mlp-!ioki$>AKjO3Tcgp#X6j{>@9Se^B0fBPTN_CBc~V>xr{3 zseC>FB4kg=LZG;{{MZ~R9?}BLwqBsB){v+Mp^g6ZXsS*~z!VJt)HC)l!Yyf7lCY6e z%9EG|MG{&x?7?gP4J6_th=e6p0Z>#yS+Lb>f-^oA0=PIp(Dxau;7;BKf}c^Lo)KsX zq7Z%s-#f zGj82a!zg1FL3388bMadKZ4){D>Jg5Dz)q?Kf}K&JG%C1*$p$@TdfN`_qGyh~-XN+s zY4!+3_9}ZDCGT20w!PkDQx}NUd;#W;%~fFA`kl<5*;354b1g? z#v&!0fP0gz;iHS3zLgvQRTa5o=LYX{oAv~Ue~GdXUOe}RBP!xC#6$xN@6gr*q=buh zQ01WMm|*mFK)UQqbq#VhTnQGT5?Mi3LU4fAf^ZYIOv#&%gj`hgLW~BH6IMO{KoEpA zEFKlrN+<&hFu58YjSN3bATHtYAySqU@dM<%j9`)N8w#N}6NJJEe9*}HEL0q)y7<-4 z^z_fXn4i|&{q_?eI6Wy87jIHQhwHAT_&}Ienc9`{+>Y(l~8*cE@%vmDH4dfr#Sa zYQ8AS=8T!FZR}1}Y9om&r;UoZP*H`I>jxonndStQm>?#G625HSmy_S(H==0qVof$6 z4bREyYSW}o3r0DJ4Jr}_?ycV#V=mx@0K6Bgbp{&_I3N#NTY8JLyN}kFLvzwf6oK&N zzw9bV`pc!1J2TFwY1DNay8L7PzBM;psf^c0|b;DB;pLkngV6aU^{|9yDf=T$Q z!RkFlLf=wdZolfhs#eBd^7uYP<3WD;NcaA$(WiCPrWb~9@y6c9JZo(Oz6PSv`0ld2 zj`dE{&#sgONmXw$0X55F!Ra~q%H0H5$64%a<@~=k=j)VBRhkT)po?p3Wc@0fU|Fl< zSJ~%LU-Pu%DdJF0xo znXPkO-s}#tX<{>5E-lxC9MdUN+d1E>>=w8`*gskQWLbKmc7Jm2`@S(K_S&9_ zp)+=~5D4mBpQNm)hGOoWj_BQ$kQU2zhw24hks24HUQv}*IqqGCP?QogGVQ{C*S(^A z!Glx3vMS!k&UP_|-(W-9b?54asIm3D2y?=&Cp|D))gU%p_>$lEYxmlSWUb@;_%oZn zTZ7iE<=@kl@VVhuUoU-up5xxnT&+W5ZIHZ#hD3ge;|~)H zRU-I$a6D&@7c^t&j25RFD6;PlW~&Rr8vG%Bd)kEBo7F>hOke#>5&;Etd2=C#m;< zQ~bm3<*jS4&gZX?AkAqPw^Qp$s}F70J5DnX7eTFEl_`x2?{5~CtMy9$G={lpajB); z`xq2;T7Dmk!RC?K1iz4r5w9Pr6gRBT)|8r7Z6qBXJz;ZG-u`(ufB%Gf7_K@+&$fbB z++=%w4V`!y>~*St(CXMXyr5a#+@hs9Q}f|+;r&cy?;54%%wAykknjjc)&5(HSHx+l zqJBZ=bE$9Tt1G-Z+O1{xwC=rRxbn7-7g`SZG(9_i4XHFouoHOL=zftE*y)Q6^DMoG zkOZ0LZAVsUXY9Te$)97>BY94yEx@B7; zTn^|zZ1uV$g)<2o!oRe2nCyE&!DB~NGZR_23FkmN}dS@ zRuWT>4pXqkNbE2>>NaGPq*z?h-h$jWq{%!@41a{_=5{T`QwruL}@V%Ds zU3TMA;+YWM=9ORe<%;Ku`OBL6n2-mHXd^3=1xO2RhGvT(E^HMDLHg7aQb*rP) zZF#al2Y2!ta*PC%FY@=_w-1K#OR1Hor~Y%)AD-7&bL60q+lOpeh3KEh|?!9M#wL;OvA$o78H@gubej z2T%ST$0p$gsY$!+_Gw!UT|G`b=2PyWrBXl0#f9BIEnlUaeYNwIVd1Hm^9zl@h9BwW z>$ly_gCNAAIqAC&oCU~dMZDzUigrDz8$|VYVQx0XcP2tQjZ*ZIV;D^D;*et?q zei0$J@Qk8Em^xyuY0HOSwXh0Ojin_q%Q zUe`2NU8HwvaAb69P>*H&&F?#TLmArIxsLGE=UE9v=vD#7fB>~hRNj~Qw77{XhExt> z_=foSzTJ(!9IWNS^ULbW64qz`Nas7n=ER+`?Clh)UHZcBx11~)B5Gc}s2Q@o{!=MS z+3{OY4I7=U+qNG(5e7{;S~N$KHb0Gs>A5vPqWVLX+Hp zxj+M;xovYCb=q=^*>!8VAZo19flKLs24;%1V%u{cJQoYUcZ{<8`wCB}15M83Xdn*) z7P|x+PgTeEnzVBm4EZkpWsPTG`T{#&TMo9BN%ij3Ob<*}pzB**hpxHZ~QBHll8BpOmp&$&;OK^Wu8y}%NL(cga2C>A71U;?F-b9Em=L~tvoOkj)|x! z=!@eE^ceO3FIl{JBpa`0wmrl>pS3(rQa84_Tv8+1^3bd559SZYo7pj(Mv7ry8!JGS zZck|e*Kl!~4x+l8;U5QF(@sQt!B4BCTHANV&ZO>lb?w648Ro~z`N-8FwTEmXHIc5D zpz8Vk8^ujc&ypc{*3TNxld9PEXVrUIZys~9uF9F(3SY@5i2b|_9|t_d@t^BDd)^mz z0Ezj-)k=|mhS}Bw0k_AX433NAXw;c761U4wQ-R0KIA2ED;>{IOM_Z0Jkjx*brp5Jv zwsE@8>H9pPK3rMpHAInJjCJd%H-;h)H&NBoYj}bAR5Sx6HQexjjLG8oCdM0W|B1L+6g%d8y$iC2d z6l1wwB6gE(c?@T6sHkTZ_my6=Eb9Q@#Cf@5Y3`Ai=O+;qp#uxNZ??OFUW~4?v37d1 zLCVg`_n6-1R#)8xcn4Oybyfs^^ER9RE6S67jWsCcwNGo0ulVk#>d?A#T)idg>5ARn zf#3ZS88ED}XJ;nn)BCx<@r-jt>KXC>;T*uoQbVWW=#@48B^`uzRkwItc3T{(oxhuW z2L<|r*2(atQ!3c4>b$Mjc9sLyE={RQ%IB>8IO7Op{MH|(16@Y_N9o{#zHMGv*R*PW zez9#VW0_4$&^PaJbF}IE@wvb!Cp76kvk+91)O95s!CF)z=trD&d$A;P@MzliH3~w8 zL3M0N(q*{;*EBq&_YD0=6c#m#E=~NyWdIFX#)l)5GMT>gVhcuGg%?<3XlUU;{+_~M z6#5vTu=%5ryiJw+gb@6mXbcrb@tQx!A-oC`2V&2Ei;^7qdQkW|l(W}_#}sID^%#w%jEEuqg`fYj zvl;%0#v*CIM@ARar325`rA3k5=9&dUXN@RyH`w0w&)^pMUB#Z+>T99u5k#`Q4(gNFB;;38ABu;BQR zM6IassR8nEg;g7KTnw`)rUu!*Pt>eD^8Lwa@n4w>^+501t7}lrlfrotYv_@REb92| zg}&_`52-`YGoH}OTi|?{Wj*uPc@VnAuYr102AoO+kvhr%w^HOkDcNQMYVdjyuPG2b z^caw7)h}O>F|g-_8u0#)Y%77Z>>0r2OnHcpN!^90`)ou>cVu)r55b zTydrxAFhxGCs%VyFA$C5Li!zC7c%l9#x^FwT*k7aD{^#vd(Mo}jPNj_Mr$`@)XE0Ho=WH%jikOH$!3E(Dhl)dt+UPD`kR|t#xKtTF1shPijH$ zg#EAhPRGwGJf(8%91V2R@O^P>*;Mz(-{I zHq^~6j7;BjMqraqxcg|>p6Rqq!=2q}DW9Q1S^s>%t6{6aXCVU`15ZS!bH6;7OOI+n zC}8xO>`;G$VY7W|HDHMWh0;Uv6yzYdNKd9_i>EH*Ud=X#%x)@b^M{cdt+U`pVJAzn zC}GN@Z7up~KbaCEdIQx0=!JzeBPbt@gA^BYTxd3s%MI|HGt`~jtgfZ|gpf0mky*yh zKpG1vJO3HTKt2oV)EOMq$V|@&?YqL~gkN3ms0=atzdwr4b1#|9d6G5;-DNyGiw!MO)d?rF^JLhr1(C}lr2}&xN$S+6 z3d7zsYW>!af@~VrRLTax<2?;8W9dmf1qxKdhi=Uz>w^md`(yz2L};D}Mw4!JZy*v{ z2hqY_!(T?GktAK)w$_&3mN?`8rCK}uTR70@qUSM#1jP+90$+eCow$6$t<4w7Xr-XF z^I)2S)?S#8#6PiFwW-`|7^qOPFZkdHR4<3Lt^YA>&Ma62l)n#ul{c01n;Lg4Z3Qjb z3Xmf#YvB_bYbR{9bg*@ilDyCH{k;jVS6V=;VZ=*T;nBqSsNj}E&xEAmqqd027>i49(#4O33W#1xS%+aWX%cM~q*@ zkdhJs`!eN*z&;*;2|nE*qKB?qdJ;PlsGjNI?>bW>&=sK8?ma|YP;9|i#+z*5noEGg zYt^KU7$vH91RB!6aYy{ZOa`*i&yTAN`=L*$_0#7HWUC{ z1q|@SupsK3MNc#;4uk-n{-?Sogb!qH$P(_D zsmB>#D9{FvdLlTw4!6)44Toas4ZDiAQ0gzqr;l zNtZ4u4g&u|0uS1AqI|B$DXp3>9^SXpBr*$UGta;GKEI(h^gCV4=_ZSE%A>jy6`d1X zTI4G1_bF!_s~%faG5x6AK6o|ptkCA8FZ$`BF~8!fO8}OJfkAYOC##Ak&rvpURRoQd z&HJ(uD~|k1|Gbhuaw}767imUoG5wjtrnW>OK`))Tg;#chSsCgV;)`%tlTkNeowK2i z=h1>8d|%~e#03c$B&;RSLxQM5P>KKZ_&S-4`N%1LyL6`~gW)IrN8MPteyLXunf*(K z=T^+1ZWClMrmKd?bU3OIK>jn9JmxO3DvD9>=z_lpPEdj|)#+bUL#h@BTN-qf F{{<2iCQ<+Z literal 0 HcmV?d00001 diff --git a/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-INFO-2024-07-25_1.log.gz b/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-INFO-2024-07-25_1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..1d68f024594608c2df615144511e23315da79ec8 GIT binary patch literal 64878 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 literal 0 HcmV?d00001 diff --git a/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-WARN-2024-07-22_1.log.gz b/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-WARN-2024-07-22_1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..a689f00d1b601191a91f19ed7af9c606b6fc2740 GIT binary patch literal 1979 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 N{{zMqH0;q$0086s(8vG) literal 0 HcmV?d00001 diff --git a/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-WARN-2024-07-25_1.log.gz b/www/wwwroot/java-smyy/server/like-admin/admin-log4j2-WARN-2024-07-25_1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..6dce1d136b268eef34f89e9be9e13b34a3ab17f5 GIT binary patch literal 15925 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 QrAx$6HN*v|GUko{2cT?8WdHyG literal 0 HcmV?d00001