From 2da959a0117ddf3d550ba32a1ff852c2d1c92733 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 09:55:59 +0800 Subject: [PATCH 01/19] permission --- .../canteen/core/alloc/controller/AllocAreaController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java index 7d5158a..2b5cba4 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java @@ -40,7 +40,7 @@ public class AllocAreaController extends BaseController { /** * 获取区域树列表 */ - @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("system:user:list")) + //@RequiresPermissions("alloc:area:list") @GetMapping("/areaTree") public AjaxResult deptTree(AllocArea area) { try { From 082ae24242ea180ba8c5fce9139e64292ab356ea Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 10:28:27 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/canteen/core/pay/controller/PayCotroller.java | 3 ++- .../java/com/bonus/canteen/core/pay/util/AlipayConfig.java | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java index ad917b0..6d3af8e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java @@ -8,6 +8,7 @@ import com.bonus.canteen.core.pay.util.AlipayConfig; import com.bonus.canteen.core.pay.dto.UpOrder; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -25,7 +26,7 @@ public class PayCotroller { AlipayTradePagePayRequest alipayRequest; @RequestMapping("pay") - public void pay(UpOrder order, HttpServletResponse response) throws AlipayApiException, IOException { + public void pay(@RequestBody UpOrder order, HttpServletResponse response) throws AlipayApiException, IOException { alipayRequest.setReturnUrl(AlipayConfig.return_url); alipayRequest.setNotifyUrl(AlipayConfig.notify_url); alipayRequest.setBizContent( diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java index d2c1910..ca4745a 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java @@ -8,11 +8,11 @@ public class AlipayConfig { // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkqpPYMDEBTiLgH08AnVYMH1WfHlB5dZC8+/mRq/4aHmvKpGdRgeE11EylhVLsm2N5ryNYI6THgwQpL0jJ9g3lTaq4+KzR8LkJlBbyFrnaflB/3AtNQugg59f77eMSjHx4cTKbLWtyRfxNR2QK6AjBLkMH2+v3GL/4dn0aGml9fcN0/+/cL4xLH8g8HJ1DE+MGx6cJGQhuE7eQqsUkmm/Bs7ElbXfOFHWhLFOAgZ/98Ieeog5JDnewGMl4yqyytFIPcv2/VDlb46MmnZciwXYmZh5W1B9ltmO6LNv/Jj0itWB1ObTGzKJf9WQDG2Xq38JqFm0TttJAKxYb95ZQGZnmwIDAQAB"; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String notify_url = "http://aa7xmz.natappfree.cc/alipay/notify/getnotify"; + public static String notify_url = "http://13866134935.gnway.cc:80/smart-canteen/alipay/notify/getnotify"; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问,//标红的域名为内网穿透工具生成的域名,没启动一次穿透工具,生成的域名都不一样,所有启动一次都需要进行修改 - public static String return_url = "http://aa7xmz.natappfree.cc/alipay/return/getreturn"; + public static String return_url = "http://13866134935.gnway.cc:80/smart-canteen/alipay/return/getreturn"; // 支付宝网关 - public static String gatewayUrl = "https://openapi.alipay.com/gateway.do"; + public static String gatewayUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; // 签名方式 public static String SIGNTYPE = "RSA2"; // 字符编码格式 From 37cfbac7081b89d8e67ad6cd6f8808464f3494c3 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 11:01:07 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/canteen/core/pay/controller/PayCotroller.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java index 6d3af8e..af976cd 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java @@ -34,7 +34,7 @@ public class PayCotroller { + "\"total_amount\":\""+ order.getPaymentAmount().toString() +"\"," + "\"subject\":\""+ order.getOrderName() +"\"," + "\"body\":\""+ order.getProductDesc() +"\"," - //+ "\"timeout_express\":\"10m\"," + + "\"timeout_express\":\"10m\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); AlipayTradePagePayResponse alipayResponse = alipayClient.pageExecute(alipayRequest); log.info("alipay body = " + alipayResponse.getBody()); From 09f1423d822c33f8dd57d95eafb70e684da9b871 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 14:05:31 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=BB=BA=E7=AB=8B?= =?UTF-8?q?=E8=B4=A6=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/controller/AccInfoController.java | 17 +++++ .../core/account/enums/AccStatusEnum.java | 69 +++++++++++++++++++ .../core/account/enums/AccWalletIdEnum.java | 24 +++++++ .../account/mapper/AccWalletInfoMapper.java | 3 + .../core/account/service/IAccInfoService.java | 3 + .../service/IAccWalletInfoService.java | 2 + .../service/impl/AccInfoServiceImpl.java | 38 ++++++++++ .../impl/AccWalletInfoServiceImpl.java | 11 +++ .../mapper/account/AccInfoMapper.xml | 4 +- .../mapper/account/AccWalletInfoMapper.xml | 11 +++ 10 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index 73ebe0e..dd28856 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.bonus.common.log.enums.OperaType; import com.bonus.canteen.core.common.annotation.PreventRepeatSubmit; +import com.bonus.system.api.domain.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -89,6 +90,22 @@ public class AccInfoController extends BaseController { } } + /** + * 新增账户资料 + */ + @ApiOperation(value = "新增账户资料") + //@PreventRepeatSubmit + //@RequiresPermissions("account:info:add") + @SysLog(title = "账户资料", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增账户资料") + @PostMapping("sync") + public AjaxResult syncAccInfo(@RequestBody SysUser sysUser) { + try { + return toAjax(accInfoService.syncAccInfo(sysUser)); + } catch (Exception e) { + return error("系统错误, " + e.getMessage()); + } + } + /** * 修改账户资料 */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java new file mode 100644 index 0000000..0ae15fe --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java @@ -0,0 +1,69 @@ +package com.bonus.canteen.core.account.enums; + +import cn.hutool.core.collection.ListUtil; + +import java.util.Arrays; +import java.util.List; + +public enum AccStatusEnum { + NORMAL(1, "正常"), + DEACTIVATE(2, "停用"), + CANCEL(3, "注销"), + OVERDUE(4, "过期"); + + private final Integer key; + private final String desc; + + private AccStatusEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public static String getDesc(Integer key) { + AccStatusEnum[] var1 = values(); + int var2 = var1.length; + + for(int var3 = 0; var3 < var2; ++var3) { + AccStatusEnum temp = var1[var3]; + if (temp.getKey().equals(key)) { + return temp.getDesc(); + } + } + + return ""; + } + + public static AccStatusEnum getEnum(Integer key) { + AccStatusEnum[] var1 = values(); + int var2 = var1.length; + + for(int var3 = 0; var3 < var2; ++var3) { + AccStatusEnum temp = var1[var3]; + if (temp.getKey().equals(key)) { + return temp; + } + } + + return null; + } + + public static List sendMqStatus() { + return Arrays.asList(DEACTIVATE.getKey(), OVERDUE.getKey()); + } + + public static List accStatusForAppWork() { + return ListUtil.toList(new Integer[]{NORMAL.getKey(), DEACTIVATE.getKey(), OVERDUE.getKey()}); + } + + public static boolean ifNotAllowRechargeRepeal(Integer key) { + return ListUtil.toList(new Integer[]{CANCEL.getKey()}).contains(key); + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java new file mode 100644 index 0000000..3a089de --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java @@ -0,0 +1,24 @@ +package com.bonus.canteen.core.account.enums; + +public enum AccWalletIdEnum { + WALLET(1, "个人钱包"), + SUBSIDY(2, "补贴钱包"); + //LUCK_MONEY(4, "红包"); + + private final Integer key; + private final String desc; + + private AccWalletIdEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java index a5062e5..91997df 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.mapper; import java.util.List; import com.bonus.canteen.core.account.domain.AccWalletInfo; +import org.apache.ibatis.annotations.Param; /** * 钱包详情信息Mapper接口 @@ -34,6 +35,8 @@ public interface AccWalletInfoMapper { */ public int insertAccWalletInfo(AccWalletInfo accWalletInfo); + public int batchInsertAccWalletInfo(@Param("list") List accWalletInfos); + /** * 修改钱包详情信息 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index 08d72d8..7095f9b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.service; import java.util.List; import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.system.api.domain.SysUser; /** * 账户资料Service接口 @@ -57,4 +58,6 @@ public interface IAccInfoService { * @return 结果 */ public int deleteAccInfoById(Long id); + + public int syncAccInfo(SysUser sysUser); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java index 1fe78a5..d172628 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java @@ -34,6 +34,8 @@ public interface IAccWalletInfoService { */ public int insertAccWalletInfo(AccWalletInfo accWalletInfo); + public int batchInsertAccWalletInfo(List accWalletInfos); + /** * 修改钱包详情信息 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 2be372f..a910fc6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -1,13 +1,25 @@ package com.bonus.canteen.core.account.service.impl; +import java.util.ArrayList; +import java.util.Date; import java.util.List; + +import com.bonus.canteen.core.account.domain.AccWalletInfo; +import com.bonus.canteen.core.account.enums.AccStatusEnum; +import com.bonus.canteen.core.account.enums.AccWalletIdEnum; +import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.houqin.mq.constant.LeMqConstant; +import com.bonus.common.houqin.mq.util.MqUtil; +import com.bonus.common.houqin.utils.id.Id; +import com.bonus.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccInfoMapper; import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.service.IAccInfoService; +import org.springframework.transaction.annotation.Transactional; /** * 账户资料Service业务层处理 @@ -19,6 +31,8 @@ import com.bonus.canteen.core.account.service.IAccInfoService; public class AccInfoServiceImpl implements IAccInfoService { @Autowired private AccInfoMapper accInfoMapper; + @Autowired + private IAccWalletInfoService accWalletInfoService; /** * 查询账户资料 @@ -95,4 +109,28 @@ public class AccInfoServiceImpl implements IAccInfoService { public int deleteAccInfoById(Long id) { return accInfoMapper.deleteAccInfoById(id); } + + @Transactional( + rollbackFor = {Exception.class} + ) + public int syncAccInfo(SysUser sysUser) { + AccInfo accInfo = new AccInfo(); + accInfo.setAccStatus(AccStatusEnum.NORMAL.getKey().longValue()); + accInfo.setUserId(sysUser.getUserId()); + accInfoMapper.insertAccInfo(accInfo); + List accWalletInfos = new ArrayList(); + AccWalletIdEnum[] accWalletIdEnums = AccWalletIdEnum.values(); + + for(int i = 0; i < accWalletIdEnums.length; ++i) { + AccWalletIdEnum accWalletIdEnum = accWalletIdEnums[i]; + AccWalletInfo accWalletInfo = new AccWalletInfo(); + accWalletInfo.setAccId(accInfo.getAccId()); + accWalletInfo.setUserId(sysUser.getUserId()); + accWalletInfo.setWalletId(accWalletIdEnum.getKey().longValue()); + accWalletInfos.add(accWalletInfo); + } + + //MqUtil.sendDataChange(sysUser.getUserId(), LeMqConstant.DataChangeType.ADD, LeMqConstant.Topic.DATA_CHANGE_CUSTOMER); + return this.accWalletInfoService.batchInsertAccWalletInfo(accWalletInfos); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java index 8cce7ca..938e31f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java @@ -3,6 +3,7 @@ package com.bonus.canteen.core.account.service.impl; import java.util.List; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccWalletInfoMapper; @@ -58,6 +59,16 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { } } + @Override + public int batchInsertAccWalletInfo(List accWalletInfos) { + accWalletInfos.stream().forEach(o -> o.setCreateBy(SecurityUtils.getUsername())); + try { + return accWalletInfoMapper.batchInsertAccWalletInfo(accWalletInfos); + } catch (Exception e) { + throw new ServiceException("错误信息描述"); + } + } + /** * 修改钱包详情信息 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml index f19a95a..d280e48 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml @@ -124,10 +124,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + insert into acc_info - acc_id, acc_name, user_id, wallet_bal, @@ -182,7 +181,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, - #{accId}, #{accName}, #{userId}, #{walletBal}, diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml index 8367406..279eca9 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml @@ -75,6 +75,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into acc_wallet_info(user_id,acc_id,wallet_id,wallet_bal,limit_balance,frozen_balance, + expired_time,last_subsidy_amount,last_subsidy_time, + create_by,create_time) values + + (#{item.userId},#{item.accId},#{item.walletId},#{item.walletBal},#{item.limitBalance},#{item.frozenBalance}, + #{item.expiredTime},#{item.lastSubsidyAmount},#{item.lastSubsidyTime}, + #{item.createBy},NOW()) + + + update acc_wallet_info From 1c6c29484c68ce256366eb6747621b47269567a0 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 16:24:32 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=BB=BA=E7=AB=8B?= =?UTF-8?q?=E8=B4=A6=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/controller/AccInfoController.java | 25 +++++++++++--- .../core/account/mapper/AccInfoMapper.java | 2 +- .../core/account/service/IAccInfoService.java | 6 ++-- .../service/impl/AccInfoServiceImpl.java | 33 ++++++++++++++----- .../mapper/account/AccInfoMapper.xml | 4 +-- 5 files changed, 53 insertions(+), 17 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index dd28856..bc9ab35 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -3,21 +3,17 @@ package com.bonus.canteen.core.account.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.bonus.common.log.enums.OperaType; -import com.bonus.canteen.core.common.annotation.PreventRepeatSubmit; import com.bonus.system.api.domain.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.bonus.common.log.annotation.SysLog; -import com.bonus.common.security.annotation.RequiresPermissions; import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.service.IAccInfoService; import com.bonus.common.core.web.controller.BaseController; @@ -133,4 +129,25 @@ public class AccInfoController extends BaseController { public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(accInfoService.deleteAccInfoByIds(ids)); } + + /** + * 删除账户资料 + */ +// @ApiOperation(value = "删除账户资料") +// //@PreventRepeatSubmit +// //@RequiresPermissions("account:info:remove") +// @SysLog(title = "账户资料", businessType = OperaType.DELETE, logType = 1,module = "账户管理->删除账户资料") +// @PostMapping("/delete/{userIds}") +// public AjaxResult deleteAccInfoByUserIds(@PathVariable("userIds") Long[] userIds) { +// return toAjax(accInfoService.deleteAccInfoByUserIds(userIds)); +// } + + @ApiOperation(value = "删除账户资料") + //@PreventRepeatSubmit + //@RequiresPermissions("account:info:remove") + @SysLog(title = "账户资料", businessType = OperaType.DELETE, logType = 1,module = "账户管理->删除账户资料") + @PostMapping("/deleteAccInfoByUserIds") + public AjaxResult deleteAccInfoByUserIds(@RequestBody List users) { + return toAjax(accInfoService.deleteAccInfoByUserIds(users)); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java index 0255a9a..64b76c0 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java @@ -48,7 +48,7 @@ public interface AccInfoMapper { * @param id 账户资料主键 * @return 结果 */ - public int deleteAccInfoById(Long id); + public int deleteAccInfoByUserId(Long id); /** * 批量删除账户资料 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index 7095f9b..30e4095 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -54,10 +54,12 @@ public interface IAccInfoService { /** * 删除账户资料信息 * - * @param id 账户资料主键 + * @param userIds 账户资料主键 * @return 结果 */ - public int deleteAccInfoById(Long id); + public int deleteAccInfoByUserIds(Long[] userIds); + + public int deleteAccInfoByUserIds(List users); public int syncAccInfo(SysUser sysUser); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index a910fc6..4f520bc 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -1,7 +1,6 @@ package com.bonus.canteen.core.account.service.impl; import java.util.ArrayList; -import java.util.Date; import java.util.List; import com.bonus.canteen.core.account.domain.AccWalletInfo; @@ -10,9 +9,6 @@ import com.bonus.canteen.core.account.enums.AccWalletIdEnum; import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; -import com.bonus.common.houqin.mq.constant.LeMqConstant; -import com.bonus.common.houqin.mq.util.MqUtil; -import com.bonus.common.houqin.utils.id.Id; import com.bonus.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -102,12 +98,33 @@ public class AccInfoServiceImpl implements IAccInfoService { /** * 删除账户资料信息 * - * @param id 账户资料主键 + * @param userIds 账户资料主键 * @return 结果 */ - @Override - public int deleteAccInfoById(Long id) { - return accInfoMapper.deleteAccInfoById(id); + @Transactional( + rollbackFor = {Exception.class} + ) + public int deleteAccInfoByUserIds(Long[] userIds) { + int count = 0; + for (int i = 0; i < userIds.length; i++) { + accWalletInfoService.deleteAccWalletInfoByUserId(userIds[i]); + //MqUtil.sendDataChange(userId, LeMqConstant.DataChangeType.REMOVE, LeMqConstant.Topic.DATA_CHANGE_CUSTOMER); + count += accInfoMapper.deleteAccInfoByUserId(userIds[i]); + } + return count; + } + + @Transactional( + rollbackFor = {Exception.class} + ) + public int deleteAccInfoByUserIds(List users) { + int count = 0; + for (int i = 0; i < users.size(); i++) { + accWalletInfoService.deleteAccWalletInfoByUserId(users.get(i).getUserId()); + //MqUtil.sendDataChange(userId, LeMqConstant.DataChangeType.REMOVE, LeMqConstant.Topic.DATA_CHANGE_CUSTOMER); + count += accInfoMapper.deleteAccInfoByUserId(users.get(i).getUserId()); + } + return count; } @Transactional( diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml index d280e48..4bd8eac 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml @@ -296,8 +296,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - - delete from acc_info where id = #{id} + + delete from acc_info where user_id = #{userId} From 1039ca16ad76a785ad02b637f2100eebcf2400f6 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 16:27:34 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=B4=A6=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/controller/AccInfoController.java | 9 --------- .../core/account/service/IAccInfoService.java | 4 +--- .../account/service/impl/AccInfoServiceImpl.java | 15 +-------------- 3 files changed, 2 insertions(+), 26 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index bc9ab35..c92ba48 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -133,15 +133,6 @@ public class AccInfoController extends BaseController { /** * 删除账户资料 */ -// @ApiOperation(value = "删除账户资料") -// //@PreventRepeatSubmit -// //@RequiresPermissions("account:info:remove") -// @SysLog(title = "账户资料", businessType = OperaType.DELETE, logType = 1,module = "账户管理->删除账户资料") -// @PostMapping("/delete/{userIds}") -// public AjaxResult deleteAccInfoByUserIds(@PathVariable("userIds") Long[] userIds) { -// return toAjax(accInfoService.deleteAccInfoByUserIds(userIds)); -// } - @ApiOperation(value = "删除账户资料") //@PreventRepeatSubmit //@RequiresPermissions("account:info:remove") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index 30e4095..a5821bf 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -54,11 +54,9 @@ public interface IAccInfoService { /** * 删除账户资料信息 * - * @param userIds 账户资料主键 + * @param users 账户资料主键 * @return 结果 */ - public int deleteAccInfoByUserIds(Long[] userIds); - public int deleteAccInfoByUserIds(List users); public int syncAccInfo(SysUser sysUser); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 4f520bc..7514e99 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -98,22 +98,9 @@ public class AccInfoServiceImpl implements IAccInfoService { /** * 删除账户资料信息 * - * @param userIds 账户资料主键 + * @param users 账户资料主键 * @return 结果 */ - @Transactional( - rollbackFor = {Exception.class} - ) - public int deleteAccInfoByUserIds(Long[] userIds) { - int count = 0; - for (int i = 0; i < userIds.length; i++) { - accWalletInfoService.deleteAccWalletInfoByUserId(userIds[i]); - //MqUtil.sendDataChange(userId, LeMqConstant.DataChangeType.REMOVE, LeMqConstant.Topic.DATA_CHANGE_CUSTOMER); - count += accInfoMapper.deleteAccInfoByUserId(userIds[i]); - } - return count; - } - @Transactional( rollbackFor = {Exception.class} ) From 4012678d6aaae1aa15cb68f3dc45d545a812748a Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 16:55:23 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/account/controller/AccInfoController.java | 10 ++++++++++ .../canteen/core/account/service/IAccInfoService.java | 2 ++ .../core/account/service/impl/AccInfoServiceImpl.java | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index c92ba48..c9906f6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -2,6 +2,8 @@ package com.bonus.canteen.core.account.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import com.bonus.common.houqin.constant.SourceTypeEnum; import com.bonus.common.log.enums.OperaType; import com.bonus.system.api.domain.SysUser; import io.swagger.annotations.Api; @@ -21,6 +23,8 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.page.TableDataInfo; +import static com.bonus.common.core.web.domain.AjaxResult.success; + /** * 账户资料Controller * @@ -141,4 +145,10 @@ public class AccInfoController extends BaseController { public AjaxResult deleteAccInfoByUserIds(@RequestBody List users) { return toAjax(accInfoService.deleteAccInfoByUserIds(users)); } + + @ApiOperation(value = "获取支付二维码") + @PostMapping(value = "/getOrderQRCode") + public AjaxResult getOrderQRCode() { + return success(accInfoService.getOrderQRCode()); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index a5821bf..e394172 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -60,4 +60,6 @@ public interface IAccInfoService { public int deleteAccInfoByUserIds(List users); public int syncAccInfo(SysUser sysUser); + + public String getOrderQRCode(); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 7514e99..4e039a2 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -9,6 +9,9 @@ import com.bonus.canteen.core.account.enums.AccWalletIdEnum; import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.houqin.constant.LeCodeUseSceneEnum; +import com.bonus.common.houqin.constant.SourceTypeEnum; +import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -137,4 +140,11 @@ public class AccInfoServiceImpl implements IAccInfoService { //MqUtil.sendDataChange(sysUser.getUserId(), LeMqConstant.DataChangeType.ADD, LeMqConstant.Topic.DATA_CHANGE_CUSTOMER); return this.accWalletInfoService.batchInsertAccWalletInfo(accWalletInfos); } + + @Override + public String getOrderQRCode() { + String stime = String.valueOf(System.currentTimeMillis()); + String userId = SecurityUtils.getUserId().toString(); + return "bns{\"s\":" + SourceTypeEnum.WECHAT_SMALL_PRO.getKey() + ",\"y\":" + LeCodeUseSceneEnum.PAY.key() + ",\"p\":\"" + userId + "\",\"t\":" + "\"" + stime + "\"}"; + } } From cc52270c041663f4b6991b10bab0915125301d69 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 17:55:31 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/controller/AccInfoController.java | 9 ++ .../canteen/core/account/domain/AccInfo.java | 5 +- .../core/account/domain/AccInfoVo.java | 45 ++++++++++ .../core/account/domain/WalletBalanceVO.java | 42 +++++++++ .../core/account/mapper/AccInfoMapper.java | 3 + .../core/account/service/IAccInfoService.java | 6 ++ .../service/impl/AccInfoServiceImpl.java | 44 ++++++++++ .../mapper/account/AccInfoMapper.xml | 85 +++++++++++++++++-- 8 files changed, 229 insertions(+), 10 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index c9906f6..428c581 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -151,4 +151,13 @@ public class AccInfoController extends BaseController { public AjaxResult getOrderQRCode() { return success(accInfoService.getOrderQRCode()); } + + @ApiOperation( + value = "查询账户(仅返回钱包余额)", + notes = "移动端查询账户(仅返回钱包余额)" + ) + @PostMapping({"/wallet/balance"}) + public AjaxResult queryWalletBalance(@RequestBody AccInfo accInfo) { + return success(this.accInfoService.queryWalletBalance(accInfo)); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java index 75481e3..4ac866e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java @@ -21,10 +21,7 @@ import com.bonus.common.core.web.domain.BaseEntity; public class AccInfo extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键自增 */ - private Long id; - - /** 账户id */ + /** 账户id 主键自增 */ @Excel(name = "账户id") @ApiModelProperty(value = "账户id") private Long accId; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java new file mode 100644 index 0000000..d44f589 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java @@ -0,0 +1,45 @@ +package com.bonus.canteen.core.account.domain; + +import com.bonus.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AccInfoVo { + /** 账户id 主键自增 */ + @Excel(name = "账户id") + @ApiModelProperty(value = "账户id") + private Long accId; + + /** 账户名称 */ + @Excel(name = "账户名称") + @ApiModelProperty(value = "账户名称") + private String accName; + + /** 人员id */ + @Excel(name = "人员id") + @ApiModelProperty(value = "人员id") + private Long userId; + + @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") + private Integer accStatus; + @ApiModelProperty("账户可用总余额(不包括冻结金额)") + private BigDecimal accBalTotal; + @ApiModelProperty("账户总余额(包含冻结金额)") + private BigDecimal accAllBal; + @ApiModelProperty("个人钱包(可用)余额/分") + private BigDecimal walletBal; + @ApiModelProperty("补贴钱包(可用)余额/分") + private BigDecimal subsidyBal; + @ApiModelProperty("红包余额") + private BigDecimal redEnvelope; + @ApiModelProperty("个人钱包冻结金额") + private BigDecimal walletFreezeBal; + @ApiModelProperty("补贴钱包冻结金额") + private BigDecimal subFreezeBal; + private BigDecimal accFreezeBalTotal; + private List walletInfoList; + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java new file mode 100644 index 0000000..57f59a9 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java @@ -0,0 +1,42 @@ +package com.bonus.canteen.core.account.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.math.BigDecimal; + +@Data +public class WalletBalanceVO { + @ApiModelProperty("个人钱包余额/分") + private BigDecimal walletBal; + @ApiModelProperty("补贴钱包余额/分") + private BigDecimal subsidyBal; + @ApiModelProperty("红包余额") + private BigDecimal redEnvelope; + @ApiModelProperty("个人钱包冻结金额") + private BigDecimal walletFreezeBal; + @ApiModelProperty("补贴钱包冻结金额") + private BigDecimal subFreezeBal; + @ApiModelProperty("冻结金额") + private BigDecimal accFreezeBalTotal; + @ApiModelProperty("账户总余额(包含冻结金额)") + private BigDecimal accAllBal; + @ApiModelProperty("账户可用余额总余额(不包括冻结金额)") + private BigDecimal accBalTotal; + @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") + private Integer accStatus; + + + public static WalletBalanceVO of(AccInfoVo accInfoVo) { + WalletBalanceVO walletBalanceVO = new WalletBalanceVO(); + walletBalanceVO.setAccBalTotal(accInfoVo.getAccBalTotal()); + walletBalanceVO.setAccAllBal(accInfoVo.getAccAllBal()); + walletBalanceVO.setWalletBal(accInfoVo.getWalletBal()); + walletBalanceVO.setSubsidyBal(accInfoVo.getSubsidyBal()); + walletBalanceVO.setRedEnvelope(accInfoVo.getRedEnvelope()); + walletBalanceVO.setWalletFreezeBal(accInfoVo.getWalletFreezeBal()); + walletBalanceVO.setSubFreezeBal(accInfoVo.getSubFreezeBal()); + walletBalanceVO.setAccFreezeBalTotal(accInfoVo.getAccFreezeBalTotal()); + walletBalanceVO.setAccStatus(accInfoVo.getAccStatus()); + return walletBalanceVO; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java index 64b76c0..4e9cbbd 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.mapper; import java.util.List; import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.canteen.core.account.domain.AccInfoVo; /** * 账户资料Mapper接口 @@ -26,6 +27,8 @@ public interface AccInfoMapper { */ public List selectAccInfoList(AccInfo accInfo); + public List selectAccInfoVoList(AccInfo accInfo); + /** * 新增账户资料 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index e394172..846a6d9 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -2,6 +2,8 @@ package com.bonus.canteen.core.account.service; import java.util.List; import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.canteen.core.account.domain.AccInfoVo; +import com.bonus.canteen.core.account.domain.WalletBalanceVO; import com.bonus.system.api.domain.SysUser; /** @@ -27,6 +29,8 @@ public interface IAccInfoService { */ public List selectAccInfoList(AccInfo accInfo); + public List selectAccInfoVoList(AccInfo accInfo); + /** * 新增账户资料 * @@ -62,4 +66,6 @@ public interface IAccInfoService { public int syncAccInfo(SysUser sysUser); public String getOrderQRCode(); + + public WalletBalanceVO queryWalletBalance(AccInfo accInfo); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 4e039a2..7fb7d9c 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -1,24 +1,35 @@ package com.bonus.canteen.core.account.service.impl; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.bonus.canteen.core.account.domain.AccInfoVo; import com.bonus.canteen.core.account.domain.AccWalletInfo; +import com.bonus.canteen.core.account.domain.WalletBalanceVO; import com.bonus.canteen.core.account.enums.AccStatusEnum; import com.bonus.canteen.core.account.enums.AccWalletIdEnum; import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.houqin.constant.LeCodeUseSceneEnum; import com.bonus.common.houqin.constant.SourceTypeEnum; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.SysUser; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccInfoMapper; import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.service.IAccInfoService; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * 账户资料Service业务层处理 @@ -27,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional; * @date 2025-04-05 */ @Service +@Slf4j public class AccInfoServiceImpl implements IAccInfoService { @Autowired private AccInfoMapper accInfoMapper; @@ -55,6 +67,11 @@ public class AccInfoServiceImpl implements IAccInfoService { return accInfoMapper.selectAccInfoList(accInfo); } + @Override + public List selectAccInfoVoList(AccInfo accInfo) { + return accInfoMapper.selectAccInfoVoList(accInfo); + } + /** * 新增账户资料 * @@ -147,4 +164,31 @@ public class AccInfoServiceImpl implements IAccInfoService { String userId = SecurityUtils.getUserId().toString(); return "bns{\"s\":" + SourceTypeEnum.WECHAT_SMALL_PRO.getKey() + ",\"y\":" + LeCodeUseSceneEnum.PAY.key() + ",\"p\":\"" + userId + "\",\"t\":" + "\"" + stime + "\"}"; } + + public WalletBalanceVO queryWalletBalance(AccInfo accInfo) { + log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(accInfo)); + AccInfoVo accInfoVO = (AccInfoVo) accInfoMapper.selectAccInfoVoList(accInfo); + if (ObjectUtil.isNull(accInfoVO)) { + throw new ServiceException("账户不存在"); + } else { + AccWalletInfo accWalletInfo = new AccWalletInfo(); + accWalletInfo.setAccId(accInfoVO.getAccId()); + List walletInfoList = this.accWalletInfoService.selectAccWalletInfoList(accWalletInfo); + this.setAccInfoVODetailList(accInfoVO, walletInfoList); + log.info("获取账户(钱包)信息,出参={}", JSONUtil.toJsonStr(accInfoVO)); + } + WalletBalanceVO walletBalanceVO = WalletBalanceVO.of(accInfoVO); + log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(walletBalanceVO)); + return walletBalanceVO; + } + + protected void setAccInfoVODetailList(AccInfoVo accInfoVo, List walletInfoList) { + if (ObjectUtil.isNotEmpty(walletInfoList)) { + //accInfoVo.setAccBalTotal((BigDecimal)walletInfoList.stream().map(AccWalletInfo::getWalletBal).filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add)); + //BigDecimal frozenBalanceAll = (BigDecimal)walletInfoList.stream().map(AccWalletInfo::getFrozenBalance).filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add); + //accInfoVo.setAccFreezeBalTotal(frozenBalanceAll); + accInfoVo.setAccAllBal(NumberUtil.add(accInfoVo.getAccBalTotal(), accInfoVo.getAccFreezeBalTotal())); + accInfoVo.setWalletInfoList(walletInfoList); + } + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml index 4bd8eac..359fbf0 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml @@ -4,7 +4,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - @@ -60,8 +59,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + - select id, acc_id, acc_name, user_id, wallet_bal, subsidy_bal, red_envelope, subsidy_freeze_bal, acc_bal, balance2, water_wallet_bal, water_subsidy_bal, freeze_wallet_bal, freeze_subsidy_bal, freeze_red_envelope, wallet_over_bal, sub_over_bal, scope, end_date, red_validity_date, acc_status, pay_pwd, sub_date_flag, sub_month_flag, acc_pay_count, last_credit_time, interval_id, curr_credit_count, curr_brush_count, curr_use_reserve_count1, curr_use_reserve_count2, same_day_count, same_month_count, curr_cumu_amount, day_cumu_amount, month_sumu_amount, min_wallet_bal_limit, min_red_bal_limit, min_sub_bal_limit, month_full_reduce_amount, last_full_reduce_time, last_sub_time, sub_validity_date, last_sub_amount, last_wal_time, last_wal_amount, revision, reserved1, reserved2, reserved3, create_by, create_time, update_by, update_time from acc_info + select acc_id, acc_name, user_id, wallet_bal, subsidy_bal, red_envelope, subsidy_freeze_bal, + acc_bal, balance2, water_wallet_bal, water_subsidy_bal, freeze_wallet_bal, freeze_subsidy_bal, + freeze_red_envelope, wallet_over_bal, sub_over_bal, scope, end_date, red_validity_date, + acc_status, pay_pwd, sub_date_flag, sub_month_flag, acc_pay_count, last_credit_time, + interval_id, curr_credit_count, curr_brush_count, curr_use_reserve_count1, curr_use_reserve_count2, + same_day_count, same_month_count, curr_cumu_amount, day_cumu_amount, month_sumu_amount, + min_wallet_bal_limit, min_red_bal_limit, min_sub_bal_limit, month_full_reduce_amount, + last_full_reduce_time, last_sub_time, sub_validity_date, last_sub_amount, last_wal_time, last_wal_amount, + revision, reserved1, reserved2, reserved3, create_by, create_time, update_by, update_time + from acc_info + + @@ -293,7 +366,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, update_time = #{updateTime}, - where id = #{id} + where acc_id = #{accId} @@ -301,9 +374,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from acc_info where id in + delete from acc_info where acc_id in - #{id} + #{accId} \ No newline at end of file From 6311049f76909d6980e50e8877385eadbcaadec0 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 7 Apr 2025 18:04:11 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/canteen/core/account/domain/AccInfoVo.java | 7 ------- .../canteen/core/account/mapper/AccInfoMapper.java | 2 +- .../core/account/service/IAccInfoService.java | 2 +- .../account/service/impl/AccInfoServiceImpl.java | 10 +++++----- .../main/resources/mapper/account/AccInfoMapper.xml | 12 +----------- 5 files changed, 8 insertions(+), 25 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java index d44f589..fcd1e5b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java @@ -12,17 +12,10 @@ public class AccInfoVo { @Excel(name = "账户id") @ApiModelProperty(value = "账户id") private Long accId; - - /** 账户名称 */ - @Excel(name = "账户名称") - @ApiModelProperty(value = "账户名称") - private String accName; - /** 人员id */ @Excel(name = "人员id") @ApiModelProperty(value = "人员id") private Long userId; - @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") private Integer accStatus; @ApiModelProperty("账户可用总余额(不包括冻结金额)") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java index 4e9cbbd..b00c82e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java @@ -27,7 +27,7 @@ public interface AccInfoMapper { */ public List selectAccInfoList(AccInfo accInfo); - public List selectAccInfoVoList(AccInfo accInfo); + public AccInfoVo selectAccInfoVo(AccInfo accInfo); /** * 新增账户资料 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index 846a6d9..38f2671 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -29,7 +29,7 @@ public interface IAccInfoService { */ public List selectAccInfoList(AccInfo accInfo); - public List selectAccInfoVoList(AccInfo accInfo); +// public List selectAccInfoVoList(AccInfo accInfo); /** * 新增账户资料 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 7fb7d9c..78cf88a 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -67,10 +67,10 @@ public class AccInfoServiceImpl implements IAccInfoService { return accInfoMapper.selectAccInfoList(accInfo); } - @Override - public List selectAccInfoVoList(AccInfo accInfo) { - return accInfoMapper.selectAccInfoVoList(accInfo); - } +// @Override +// public List selectAccInfoVoList(AccInfo accInfo) { +// return accInfoMapper.selectAccInfoVoList(accInfo); +// } /** * 新增账户资料 @@ -167,7 +167,7 @@ public class AccInfoServiceImpl implements IAccInfoService { public WalletBalanceVO queryWalletBalance(AccInfo accInfo) { log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(accInfo)); - AccInfoVo accInfoVO = (AccInfoVo) accInfoMapper.selectAccInfoVoList(accInfo); + AccInfoVo accInfoVO = accInfoMapper.selectAccInfoVo(accInfo); if (ObjectUtil.isNull(accInfoVO)) { throw new ServiceException("账户不存在"); } else { diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml index 359fbf0..7b8d738 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml @@ -59,16 +59,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - - - select acc_id, acc_name, user_id, wallet_bal, subsidy_bal, red_envelope, subsidy_freeze_bal, acc_bal, balance2, water_wallet_bal, water_subsidy_bal, freeze_wallet_bal, freeze_subsidy_bal, @@ -137,7 +127,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - and acc_id = #{accId} From 1019fad13612095fb672485595b3d2538dc53e99 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 11:14:59 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E8=B4=9F=E8=B4=A3=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bonus/canteen/core/alloc/domain/AllocArea.java | 6 +++--- .../com/bonus/canteen/core/alloc/domain/AllocCanteen.java | 6 +++--- .../com/bonus/canteen/core/alloc/domain/AllocStall.java | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java index da48d5d..b7b6b2e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java @@ -35,9 +35,9 @@ public class AllocArea extends BaseEntity { @ApiModelProperty(value = "上级区域id") private Long parentId; - /** 负责人id */ - @Excel(name = "负责人id") - @ApiModelProperty(value = "负责人id") + /** 负责人 */ + @Excel(name = "负责人") + @ApiModelProperty(value = "负责人") private String director; /** 联系电话 */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java index 0a40604..86e2b27 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java @@ -39,9 +39,9 @@ public class AllocCanteen extends BaseEntity { @ApiModelProperty(value = "食堂业务类型 1-食堂 2-超市") private Integer canteenType; - /** 负责人id */ - @Excel(name = "负责人id") - @ApiModelProperty(value = "负责人id") + /** 负责人 */ + @Excel(name = "负责人") + @ApiModelProperty(value = "负责人") private Long director; /** 联系电话 */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java index 8aad573..1861a86 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java @@ -49,9 +49,9 @@ public class AllocStall extends BaseEntity { @ApiModelProperty(value = "第三方档口id") private String thirdStallId; - /** 负责人id */ - @Excel(name = "负责人id") - @ApiModelProperty(value = "负责人id") + /** 负责人 */ + @Excel(name = "负责人") + @ApiModelProperty(value = "负责人") private Long director; /** 联系电话 */ From f0463594cad420161face673ad519c7fde01053f Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 13:03:21 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E4=BD=99=E9=A2=9D=E4=BA=8C=E7=BB=B4?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/account/domain/AccInfoVo.java | 16 ++++++------ .../core/account/domain/WalletBalanceVO.java | 26 +++++++++---------- .../service/impl/AccInfoServiceImpl.java | 12 ++++----- .../core/alloc/domain/AllocCanteen.java | 8 +++--- .../canteen/core/alloc/domain/AllocStall.java | 8 +++--- 5 files changed, 34 insertions(+), 36 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java index fcd1e5b..00a457b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java @@ -19,20 +19,20 @@ public class AccInfoVo { @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") private Integer accStatus; @ApiModelProperty("账户可用总余额(不包括冻结金额)") - private BigDecimal accBalTotal; + private Long accBalTotal; @ApiModelProperty("账户总余额(包含冻结金额)") - private BigDecimal accAllBal; + private Long accAllBal; @ApiModelProperty("个人钱包(可用)余额/分") - private BigDecimal walletBal; + private Long walletBal; @ApiModelProperty("补贴钱包(可用)余额/分") - private BigDecimal subsidyBal; + private Long subsidyBal; @ApiModelProperty("红包余额") - private BigDecimal redEnvelope; + private Long redEnvelope; @ApiModelProperty("个人钱包冻结金额") - private BigDecimal walletFreezeBal; + private Long walletFreezeBal; @ApiModelProperty("补贴钱包冻结金额") - private BigDecimal subFreezeBal; - private BigDecimal accFreezeBalTotal; + private Long subFreezeBal; + private Long accFreezeBalTotal; private List walletInfoList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java index 57f59a9..791ed96 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java @@ -7,35 +7,35 @@ import java.math.BigDecimal; @Data public class WalletBalanceVO { @ApiModelProperty("个人钱包余额/分") - private BigDecimal walletBal; + private Long walletBal; @ApiModelProperty("补贴钱包余额/分") - private BigDecimal subsidyBal; + private Long subsidyBal; @ApiModelProperty("红包余额") - private BigDecimal redEnvelope; + private Long redEnvelope; @ApiModelProperty("个人钱包冻结金额") - private BigDecimal walletFreezeBal; + private Long walletFreezeBal; @ApiModelProperty("补贴钱包冻结金额") - private BigDecimal subFreezeBal; + private Long subFreezeBal; @ApiModelProperty("冻结金额") - private BigDecimal accFreezeBalTotal; + private Long accFreezeBalTotal; @ApiModelProperty("账户总余额(包含冻结金额)") - private BigDecimal accAllBal; + private Long accAllBal; @ApiModelProperty("账户可用余额总余额(不包括冻结金额)") - private BigDecimal accBalTotal; + private Long accBalTotal; @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") private Integer accStatus; public static WalletBalanceVO of(AccInfoVo accInfoVo) { WalletBalanceVO walletBalanceVO = new WalletBalanceVO(); - walletBalanceVO.setAccBalTotal(accInfoVo.getAccBalTotal()); + //walletBalanceVO.setAccBalTotal(accInfoVo.getAccBalTotal()); walletBalanceVO.setAccAllBal(accInfoVo.getAccAllBal()); walletBalanceVO.setWalletBal(accInfoVo.getWalletBal()); walletBalanceVO.setSubsidyBal(accInfoVo.getSubsidyBal()); - walletBalanceVO.setRedEnvelope(accInfoVo.getRedEnvelope()); - walletBalanceVO.setWalletFreezeBal(accInfoVo.getWalletFreezeBal()); - walletBalanceVO.setSubFreezeBal(accInfoVo.getSubFreezeBal()); - walletBalanceVO.setAccFreezeBalTotal(accInfoVo.getAccFreezeBalTotal()); + //walletBalanceVO.setRedEnvelope(accInfoVo.getRedEnvelope()); + //walletBalanceVO.setWalletFreezeBal(accInfoVo.getWalletFreezeBal()); + //walletBalanceVO.setSubFreezeBal(accInfoVo.getSubFreezeBal()); + //walletBalanceVO.setAccFreezeBalTotal(accInfoVo.getAccFreezeBalTotal()); walletBalanceVO.setAccStatus(accInfoVo.getAccStatus()); return walletBalanceVO; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 78cf88a..549f36d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -166,7 +166,7 @@ public class AccInfoServiceImpl implements IAccInfoService { } public WalletBalanceVO queryWalletBalance(AccInfo accInfo) { - log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(accInfo)); + log.info("查询账户余额入参={}", JSONUtil.toJsonStr(accInfo)); AccInfoVo accInfoVO = accInfoMapper.selectAccInfoVo(accInfo); if (ObjectUtil.isNull(accInfoVO)) { throw new ServiceException("账户不存在"); @@ -178,17 +178,15 @@ public class AccInfoServiceImpl implements IAccInfoService { log.info("获取账户(钱包)信息,出参={}", JSONUtil.toJsonStr(accInfoVO)); } WalletBalanceVO walletBalanceVO = WalletBalanceVO.of(accInfoVO); - log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(walletBalanceVO)); + log.info("查询账户余额入参={}", JSONUtil.toJsonStr(walletBalanceVO)); return walletBalanceVO; } protected void setAccInfoVODetailList(AccInfoVo accInfoVo, List walletInfoList) { if (ObjectUtil.isNotEmpty(walletInfoList)) { - //accInfoVo.setAccBalTotal((BigDecimal)walletInfoList.stream().map(AccWalletInfo::getWalletBal).filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add)); - //BigDecimal frozenBalanceAll = (BigDecimal)walletInfoList.stream().map(AccWalletInfo::getFrozenBalance).filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add); - //accInfoVo.setAccFreezeBalTotal(frozenBalanceAll); - accInfoVo.setAccAllBal(NumberUtil.add(accInfoVo.getAccBalTotal(), accInfoVo.getAccFreezeBalTotal())); - accInfoVo.setWalletInfoList(walletInfoList); + accInfoVo.setWalletBal(walletInfoList.stream().filter(o -> o.getWalletId().intValue() == AccWalletIdEnum.WALLET.getKey()).mapToLong(AccWalletInfo::getWalletBal).sum()); + accInfoVo.setSubsidyBal(walletInfoList.stream().filter(o -> o.getWalletId().intValue() == AccWalletIdEnum.SUBSIDY.getKey()).mapToLong(AccWalletInfo::getWalletBal).sum()); + accInfoVo.setAccAllBal(accInfoVo.getWalletBal() + accInfoVo.getSubsidyBal()); } } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java index 86e2b27..cffafc6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java @@ -56,14 +56,14 @@ public class AllocCanteen extends BaseEntity { /** 营业时间 */ @ApiModelProperty(value = "营业时间") - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "营业时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "HH:mm:ss") + @Excel(name = "营业时间", width = 30, dateFormat = "HH:mm:ss") private Date startBusinessTime; /** 营业时间 */ @ApiModelProperty(value = "营业时间") - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "营业时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "HH:mm:ss") + @Excel(name = "营业时间", width = 30, dateFormat = "HH:mm:ss") private Date endBusinessTime; /** 食堂图片链接 */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java index 1861a86..2426881 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java @@ -71,14 +71,14 @@ public class AllocStall extends BaseEntity { /** 营业时间 */ @ApiModelProperty(value = "营业时间") - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "营业时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "HH:mm:ss") + @Excel(name = "营业时间", width = 30, dateFormat = "HH:mm:ss") private Date startBusinessTime; /** 营业时间 */ @ApiModelProperty(value = "营业时间") - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "营业时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "HH:mm:ss") + @Excel(name = "营业时间", width = 30, dateFormat = "HH:mm:ss") private Date endBusinessTime; /** 是否启用叫号 */ From e266a1f15cadf89927be6b636286fc0469cb33db Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 13:38:25 +0800 Subject: [PATCH 12/19] remove ut --- .../core/pay/constants/PayStateEnum.java | 28 ++++ .../core/pay/constants/PayTypeEnum.java | 123 ++++++++++++++++++ .../core/pay/constants/TradeTypeEnum.java | 25 ++++ .../canteen/core/config/SmUtilsTest.java | 75 ----------- 4 files changed, 176 insertions(+), 75 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayStateEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayTypeEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/TradeTypeEnum.java delete mode 100644 bonus-modules/bonus-smart-canteen/src/test/java/com/bonus/canteen/core/config/SmUtilsTest.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayStateEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayStateEnum.java new file mode 100644 index 0000000..2490acc --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayStateEnum.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.pay.constants; + +public enum PayStateEnum { + UN_PAY(1, "未支付"), + PAY_INPROCESS(2, "支付中"), + PAY_SUCC(3, "支付成功"), + PAY_FAIL(4, "支付失败"), + PAY_CLOSE(5, "支付关闭"), + PART_PAY(6, "部分支付"); + + private final Integer key; + private final String desc; + + + private PayStateEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayTypeEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayTypeEnum.java new file mode 100644 index 0000000..7381ec8 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/PayTypeEnum.java @@ -0,0 +1,123 @@ +package com.bonus.canteen.core.pay.constants; + +public enum PayTypeEnum { + MEAL_CARD(1, "账户支付"), + CASH(2, "现金支付"), + COUPON(3, "餐券支付"), + CASH_MACHINE(4, "设备现金支付"), + SUB_GRANT(5, "补贴"), + RED_GRANT(6, "红包"), + WX_RCB_NATIVE(7, "无锡农商行原生"), + ALI_QRCODE(10, "支付宝扫码"), + ALI_FACE(11, "支付宝人脸"), + ALI_NATIVE(12, "支付宝原生"), + OFFLINE_ALI_QRCODE(13, "支付宝线下扫码"), + ALI_APP_PAY(14, "支付宝app"), + ALI_DING_ACC_PAY(15, "钉工牌账户支付"), + ALI_DING_PAY(16, "钉工牌支付宝支付"), + ALI_PAY_WITHHOLD(17, "支付宝代扣"), + ALI_H5_PAY(18, "支付宝移动网页支付"), + WECHAT_QRCODE(20, "微信扫码"), + WECHAT_FACE(21, "微信k12人脸"), + WECHAT_NATIVE(22, "微信原生"), + WECHAT_WITHHOLD(23, "微信代扣"), + OFFLINE_WECHAT_QRCODE(24, "微信线下扫码"), + WECHAT_H5(25, "微信移动网页支付"), + UNION_PAY_QRCODE(30, "银联付款码"), + CLOUD_UNION_PAY(31, "云闪付"), + JINGDONG_PAY(40, "京东支付"), + CCB_PAY(41, "建行龙支付"), + BUSINESS_UNIFY_PAY(50, "商家统一支付"), + OTHER_QRCODE(60, "小程序二维码支付"), + OTHER_PAY(61, "其他支付"), + MIXTURE_PAY_ALI_QRCODE(70, "支付宝扫码(混合支付)"), + MIXTURE_PAY_WECHAT_QRCODE(71, "微信扫码(混合支付)"), + MIXTURE_PAY_ALI_NATIVE(72, "支付宝原生(混合支付)"), + MIXTURE_PAY_WECHAT_NATIVE(73, "微信原生(混合支付)"), + SHOU_QIAN_BA_PAY(80, "收钱吧支付"), + SHOU_QIAN_BA_MOBILE_H5(81, "收钱吧移动端h5支付"), + THIRD_DEVICE(98, "第三方设备支付"), + THIRD_ACC(99, "第三方账户支付"), + ABC_PAY_CODE(100, "农行付款码支付"), + ABC_ID_CODE(101, "农行身份码支付"), + ABC_ACCOUNT_PAY(102, "农行账户支付"), + ABC_QR_CODE_PAY(103, "农行扫码支付"), + ABC_CREDIT_PAY(104, "农行信用卡支付"), + ABC_AGENT_PAY(105, "农行授权免密支付"), + ICBC_PAY_CODE(110, "工行付款码支付"), + CMB_PAY_CODE(120, "招行扫码支付"), + CIB_PAY_CODE(121, "兴业银行扫码支付"), + ABC_DCEP_CODE_PAY(122, "数字人民币扫码支付"), + ECITIC_H5_PAY(123, "中信H5支付"), + ECITIC_PAY_CODE(124, "中信付款码支付"), + BOC_ACCOUNT_PAY(125, "中国银行账户支付"), + CHINA_PAY_CODE(126, "银联线上支付"), + BOC_AREA_CODE_ACCOUNT_PAY(127, "中国银行园区码-小牛账户支付"), + BOC_LENIU_CODE_ACCOUNT_PAY(128, "中国银行-小牛二维码账户支付"), + BOC_LENIU_CARD_ACCOUNT_PAY(129, "中国银行-小牛刷卡账户支付"), + BOC_LENIU_FACE_ACCOUNT_PAY(130, "中国银行-小牛刷脸账户支付"), + CIB_DCEP_CONTRACT(131, "数字人民币协议免密支付"), + TCRCB_PAY_H5(133, "太仓农商行支付"), + FUIOU_PAY_H5(132, "富友支付"), + ACC_BNJ_PAY(134, "南京银行免密支付"), + WECHAT_CARD_QR_CODE(135, "腾讯微卡电子码"), + WECHAT_CARD_H5(136, "腾讯微卡在线支付"), + CCB_PAY_H5(137, "建设银行H5支付"), + KSRCB_PAY_CODE(138, "昆山农商行付款码支付"), + CIB_DCEP_AUTH(139, "兴业银行数币密码支付"), + SZRCB_PAY_H5(140, "苏州农商行支付"), + BNJ_WECHAT_MINI(141, "微信小程序南京银行免密支付"), + NBCB_SETTLEMENT_PAY(142, "宁波银行结算支付"), + ABC_NATIVE(143, "农行页面下单"), + ABC_POS_MACHINE_PAY(144, "农行POS机刷卡支付"), + BNJ_H5_PAY(145, "南京银行H5支付"), + ABC_PAY_H5(146, "农行H5支付"), + ALI_ENTERPRISE_FACE(147, "支付宝企业刷脸"), + ALI_ENTERPRISE_QRCODE(148, "支付宝企业扫码"), + ALI_ENTERPRISE_WITHHOLD(149, "支付宝企业免密支付"), + ACC_SCAN(150, "收款码(账户)"), + ALI_SCAN(151, "收款码(支付宝)"), + WECHAT_SCAN(152, "收款码(微信)"), + ECITIC_H5_WECHAT_PAY(153, "微信支付(中信)"), + ECITIC_H5_UNCONSCIOUS_PAY(154, "中信无感支付"), + ABC_PAY_H5_WECHAT(155, "农行H5微信支付"), + ABC_PAY_H5_ALI(156, "农行H5支付宝支付"), + DIANDI_PAY_H5(157, "点滴支付H5支付"), + HMS_CAMPUS_CODE(158, "银联园区二维码支付"), + CIB_NATIVE(159, "兴业银行客户端支付"), + UMS_ENTRUST_PAY(160, "云闪付授权支付"), + HUAGENG_WECHAT_PAY(161, "华耕微信收款"), + HUAGENG_ALI_PAY(162, "华耕支付宝收款"), + HUAGENG_SUBSIDY_PAY(163, "华耕补贴消费"), + HUAGENG_POLYMERIZE_PAY(164, "华耕聚合收款"), + HUAGENG_CASH_PAY(165, "华耕手填现金"), + HUAGENG_SIGNING_PAY(166, "华耕手填签单"), + HUAGENG_COUPON_PAY(167, "华耕手填餐券"), + SODEXO_QRCODE(168, "索迪斯二维码支付"), + TC_SSC_CARD_PAY(169, "太仓社保卡支付"), + CMB_H5_CARD_PAY(170, "招行一网通支付"), + ZY_WECHAT_PAY(171, "正元微信支付"), + ZY_ALI_PAY(172, "正元支付宝支付"), + ZY_ACC_PAY(173, "正元账户支付"), + ZY_CCB_PAY(174, "正元建行支付"), + ICBC_JFT_H5(175, "工行聚富通支付"), + ABC_WECHAT_BRIDGE(176, "微信支付(农行)"); + + private final Integer key; + private final String desc; + + private PayTypeEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } + + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/TradeTypeEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/TradeTypeEnum.java new file mode 100644 index 0000000..cc9b843 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/constants/TradeTypeEnum.java @@ -0,0 +1,25 @@ +package com.bonus.canteen.core.pay.constants; + +public enum TradeTypeEnum { + RECHARGE(1, "充值"), + RECHARGE_REFUND(2, "充值退款"), + CONSUME(3, "消费"), + CONSUME_REFUND(4, "消费退款"); + + private final Integer key; + private final String desc; + + private TradeTypeEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } + +} diff --git a/bonus-modules/bonus-smart-canteen/src/test/java/com/bonus/canteen/core/config/SmUtilsTest.java b/bonus-modules/bonus-smart-canteen/src/test/java/com/bonus/canteen/core/config/SmUtilsTest.java deleted file mode 100644 index 521baf1..0000000 --- a/bonus-modules/bonus-smart-canteen/src/test/java/com/bonus/canteen/core/config/SmUtilsTest.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.bonus.canteen.core.config; - -import cn.hutool.core.codec.Base64; -import cn.hutool.core.codec.Base64Encoder; -import cn.hutool.crypto.SmUtil; -import cn.hutool.crypto.asymmetric.SM2; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import java.io.PrintStream; -import java.nio.charset.StandardCharsets; -import java.security.NoSuchAlgorithmException; - -@RunWith(SpringRunner.class) -public class SmUtilsTest { - - public static void main(String[] args) throws NoSuchAlgorithmException { - sm2(); -// sm4(); -// sm4WithoutIV(); - } - - private static void sm2() { - System.out.println("=================sm2==================="); - String privateKeyStr = "D55F4709BE51FCDC71D6385885A5CAEE70A09438F862BEB4E56F64A70C76EF5F"; - String pubKeyStr = "04768E8E44656FFD4BA58C0270002A28365A5F6B0F6D40E88B9221CDFAAA8E82C8CCEDBA5FC2D03F20B11492EBE90CC04782682AFE326363A503F086C04A14092C"; - SM2 sm2 = SmUtil.sm2(privateKeyStr, pubKeyStr); - String data = "liolay123466789"; - byte[] encrypt = sm2.encrypt("2AD2252000231631".getBytes(StandardCharsets.UTF_8)); - System.out.println("encrypt:" + Base64.encode(encrypt)); - PrintStream var10000 = System.out; - byte[] var10001 = sm2.sign(data.getBytes(StandardCharsets.UTF_8)); - var10000.println("sign:" + Base64Encoder.encode(var10001)); - var10000 = System.out; - String var5 = new String(sm2.decrypt(encrypt)); - var10000.println("decrypt:" + var5); - } - - private static void sm4() throws NoSuchAlgorithmException { - System.out.println("================sm4=================="); - BouncyCastleProvider provider = new BouncyCastleProvider(); - KeyGenerator generator = KeyGenerator.getInstance("SM4", provider); - SecretKey secretKey = generator.generateKey(); - byte[] encoded = secretKey.getEncoded(); - String key = Base64Encoder.encode(encoded); - System.out.println("key: " + key); - String data = "liolay"; - String encryptBySm4 = SmUtils.encryptBySm4(data, encoded); - System.out.println("encrypt: " + encryptBySm4); - PrintStream var10000 = System.out; - String var10001 = SmUtils.decryptBySm4(encryptBySm4, encoded); - var10000.println("decrypt: " + var10001); - var10000 = System.out; - var10001 = SmUtils.decryptBySm4(encryptBySm4, key); - var10000.println("decrypt: " + var10001); - } - - private static void sm4WithoutIV() throws NoSuchAlgorithmException { - System.out.println("================sm4WithoutIV=================="); - BouncyCastleProvider provider = new BouncyCastleProvider(); - KeyGenerator generator = KeyGenerator.getInstance("SM4", provider); - SecretKey secretKey = generator.generateKey(); - byte[] key = secretKey.getEncoded(); - String keyEncode = Base64Encoder.encode(key); - System.out.println("key: " + keyEncode); - String plainData = "liolay"; - String encryptedData = SmUtils.encryptBySm4(plainData, key); - System.out.println("encrypt: " + encryptedData); - String decryptData = SmUtils.decryptBySm4(encryptedData, key); - System.out.println("decrypt: " + decryptData); - } - -} From e0918bb09e6f1453df6111c74b37d46ca6b1cd6b Mon Sep 17 00:00:00 2001 From: gaowdong Date: Tue, 8 Apr 2025 13:39:56 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E8=B4=A6=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/constants/AccWalletIdEnum.java | 59 ++++++ .../account/constants/AccountStatusEnum.java | 37 ++++ .../account/controller/AccInfoController.java | 69 +++++-- .../canteen/core/account/domain/AccInfo.java | 12 +- .../domain/bo/AccOperationHistory.java | 40 ++++ .../account/domain/bo/AccStatusChange.java | 14 ++ .../domain/param/AccOperationQueryParam.java | 22 +++ .../domain/param/AccountBalanceEditParam.java | 28 +++ .../param/AccountEnableDisableParam.java | 16 ++ .../domain/param/AccountInfoQueryParam.java | 28 +++ .../account/domain/vo/AccInfoDetailsVO.java | 72 +++++++ .../domain/vo/AccInfoInvalidSumVO.java | 12 ++ .../account/domain/vo/AccWalletInfoVO.java | 18 ++ .../core/account/mapper/AccInfoMapper.java | 18 +- .../mapper/AccOperationHistoryMapper.java | 15 ++ .../account/mapper/AccWalletInfoMapper.java | 12 ++ .../canteen/core/account/mq/AccMqSender.java | 103 ++++++++++ .../service/AccOperationHistoryService.java | 12 ++ .../core/account/service/IAccInfoService.java | 18 +- .../service/IAccWalletInfoService.java | 9 + .../service/impl/AccInfoServiceImpl.java | 186 ++++++++++++++++-- .../impl/AccOperationHistoryServiceImpl.java | 45 +++++ .../impl/AccWalletInfoServiceImpl.java | 51 ++++- .../core/common/threadPool/AsyncConfig.java | 50 +++++ .../threadPool/TenantTaskDecorator.java | 29 +++ .../common/utils/TenantContextHolder.java | 21 ++ .../mapper/account/AccInfoMapper.xml | 134 ++++++++++++- .../account/AccOperationHistoryMapper.xml | 45 +++++ .../mapper/account/AccWalletInfoMapper.xml | 34 ++++ 29 files changed, 1152 insertions(+), 57 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccWalletIdEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccOperationHistory.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccStatusChange.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccOperationQueryParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountBalanceEditParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountEnableDisableParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountInfoQueryParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoInvalidSumVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccWalletInfoVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccOperationHistoryMapper.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccOperationHistoryService.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/AsyncConfig.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/TenantTaskDecorator.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/utils/TenantContextHolder.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccOperationHistoryMapper.xml diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccWalletIdEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccWalletIdEnum.java new file mode 100644 index 0000000..1e3afa2 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccWalletIdEnum.java @@ -0,0 +1,59 @@ +package com.bonus.canteen.core.account.constants; + +import cn.hutool.core.collection.ListUtil; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public enum AccWalletIdEnum { + WALLET(1, "个人钱包"), + SUBSIDY(2, "补贴钱包"); + private final Integer key; + private final String desc; + + // 使用 Map 提升查找效率 + private static final Map ENUM_MAP = Arrays.stream(values()) + .collect(Collectors.toMap(AccWalletIdEnum::getKey, Function.identity())); + + private AccWalletIdEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public static String getDesc(Integer key) { + AccWalletIdEnum enumValue = ENUM_MAP.get(key); + return enumValue != null ? enumValue.getDesc() : ""; + } + + public static AccWalletIdEnum getEnum(Integer key) { + return ENUM_MAP.get(key); + } + + public static Map getEnumMap() { + return ENUM_MAP; + } + + public static List checkAccCancelWallet() { + return Arrays.asList(WALLET.getKey(), SUBSIDY.getKey()); + } + + public static String getAllWalletId() { + return StringUtils.join(getAllWalletIdList(), ","); + } + + public static List getAllWalletIdList() { + return Arrays.stream(values()) + .map(AccWalletIdEnum::getKey) + .collect(Collectors.toList()); + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java new file mode 100644 index 0000000..8d87954 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java @@ -0,0 +1,37 @@ +package com.bonus.canteen.core.account.constants; + +import java.util.*; +import java.util.stream.Collectors; + +public enum AccountStatusEnum { + NORMAL(1, "正常"), + DEACTIVATE(2, "停用"); + + private final Integer key; + private final String desc; + + private static final Map ENUM_MAP = Arrays.stream(values()) + .collect(Collectors.toMap(AccountStatusEnum::getKey, e -> e)); + + private AccountStatusEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public static String getDesc(Integer key) { + AccountStatusEnum enumValue = ENUM_MAP.get(key); + return enumValue != null ? enumValue.getDesc() : ""; + } + + public static AccountStatusEnum getEnum(Integer key) { + return ENUM_MAP.get(key); + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index 428c581..53a4e31 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -2,8 +2,16 @@ package com.bonus.canteen.core.account.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; -import com.bonus.common.houqin.constant.SourceTypeEnum; +import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.canteen.core.account.domain.param.AccOperationQueryParam; +import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam; +import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; + +import com.bonus.canteen.core.account.service.AccOperationHistoryService; import com.bonus.common.log.enums.OperaType; import com.bonus.system.api.domain.SysUser; import io.swagger.annotations.Api; @@ -16,7 +24,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.bonus.common.log.annotation.SysLog; -import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.service.IAccInfoService; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; @@ -37,6 +44,8 @@ import static com.bonus.common.core.web.domain.AjaxResult.success; public class AccInfoController extends BaseController { @Autowired private IAccInfoService accInfoService; + @Autowired + private AccOperationHistoryService accOperationHistoryService; /** * 查询账户资料列表 @@ -44,10 +53,9 @@ public class AccInfoController extends BaseController { @ApiOperation(value = "查询账户资料列表") //@RequiresPermissions("account:info:list") @GetMapping("/list") - public TableDataInfo list(AccInfo accInfo) { + public TableDataInfo list(AccountInfoQueryParam accountInfoQueryParam) { startPage(); - List list = accInfoService.selectAccInfoList(accInfo); - return getDataTable(list); + return getDataTable(accInfoService.selectAccInfoList(accountInfoQueryParam)); } /** @@ -58,9 +66,9 @@ public class AccInfoController extends BaseController { //@RequiresPermissions("account:info:export") @SysLog(title = "账户资料", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出账户资料") @PostMapping("/export") - public void export(HttpServletResponse response, AccInfo accInfo) { - List list = accInfoService.selectAccInfoList(accInfo); - ExcelUtil util = new ExcelUtil(AccInfo.class); + public void export(HttpServletResponse response, AccountInfoQueryParam accountInfoQueryParam) { + List list = accInfoService.selectAccInfoList(accountInfoQueryParam); + ExcelUtil util = new ExcelUtil<>(AccInfoDetailsVO.class); util.exportExcel(response, list, "账户资料数据"); } @@ -109,18 +117,15 @@ public class AccInfoController extends BaseController { /** * 修改账户资料 */ - @ApiOperation(value = "修改账户资料") - //@PreventRepeatSubmit - //@RequiresPermissions("account:info:edit") - @SysLog(title = "账户资料", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改账户资料") - @PostMapping("/edit") - public AjaxResult edit(@RequestBody AccInfo accInfo) { - try { - return toAjax(accInfoService.updateAccInfo(accInfo)); - } catch (Exception e) { - return error("系统错误, " + e.getMessage()); - } - } +// @ApiOperation(value = "修改账户余额以及有效期") +// //@PreventRepeatSubmit +// //@RequiresPermissions("account:info:edit") +// @SysLog(title = "账户资料", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改账户资料") +// @PostMapping("/balance/edit") +// public AjaxResult edit(@RequestBody AccountBalanceEditParam accountBalanceEditParam) { +// this.accInfoService.updateAccInfo(accountBalanceEditParam); +// return AjaxResult.success(); +// } /** * 删除账户资料 @@ -134,6 +139,30 @@ public class AccInfoController extends BaseController { return toAjax(accInfoService.deleteAccInfoByIds(ids)); } +// @ApiOperation("账户注销/过期数量") +// @PostMapping({"/invalid/sum"}) +// public AjaxResult queryAccInfoExpiredCount() { +// return AjaxResult.success(this.accInfoService.queryAccInfoInvalidSum()); +// } + @ApiOperation("查询账户余额统计") + @PostMapping({"/balance/sum"}) + public AjaxResult queryAccInfoBalanceSum(@RequestBody AccountInfoQueryParam accountInfoQueryParam) { + return AjaxResult.success(this.accInfoService.queryAccInfoBalanceSum(accountInfoQueryParam)); + } + + @ApiOperation("账户启用、停用") + @PostMapping({"/status/edit"}) + public AjaxResult editAccountStatus(@RequestBody @Valid AccountEnableDisableParam accountEnableDisableParam) { + this.accInfoService.editAccountStatus(accountEnableDisableParam); + return AjaxResult.success(); + } + + @ApiOperation("账户操作记录") + @PostMapping({"/operation/list"}) + public AjaxResult queryPageAccOperationRecord(@RequestBody AccOperationQueryParam param) { + return AjaxResult.success(this.accOperationHistoryService.selectAccOperationHistory(param)); + } + /** * 删除账户资料 */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java index 4ac866e..ec3eb34 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java @@ -1,5 +1,7 @@ package com.bonus.canteen.core.account.domain; +import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import com.bonus.common.core.annotation.Excel; @@ -110,13 +112,13 @@ public class AccInfo extends BaseEntity { @ApiModelProperty(value = "有效截止日期") @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "有效截止日期", width = 30, dateFormat = "yyyy-MM-dd") - private Date endDate; + private LocalDate endDate; /** 红包过期时间 */ @ApiModelProperty(value = "红包过期时间") @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "红包过期时间", width = 30, dateFormat = "yyyy-MM-dd") - private Date redValidityDate; + private LocalDate redValidityDate; /** 账户状态 1正常 2冻结 3销户 */ @Excel(name = "账户状态 1正常 2冻结 3销户") @@ -202,17 +204,17 @@ public class AccInfo extends BaseEntity { /** 个人钱包最低余额限制金额 */ @Excel(name = "个人钱包最低余额限制金额") @ApiModelProperty(value = "个人钱包最低余额限制金额") - private Long minWalletBalLimit; + private BigDecimal minWalletBalLimit; /** 补贴钱包最低余额限制金额 */ @Excel(name = "补贴钱包最低余额限制金额") @ApiModelProperty(value = "补贴钱包最低余额限制金额") - private Long minRedBalLimit; + private BigDecimal minRedBalLimit; /** 红包钱包最低余额限制金额 */ @Excel(name = "红包钱包最低余额限制金额") @ApiModelProperty(value = "红包钱包最低余额限制金额") - private Long minSubBalLimit; + private BigDecimal minSubBalLimit; /** 当月累计使用满减次数 */ @Excel(name = "当月累计使用满减次数") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccOperationHistory.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccOperationHistory.java new file mode 100644 index 0000000..89b7b6d --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccOperationHistory.java @@ -0,0 +1,40 @@ +package com.bonus.canteen.core.account.domain.bo; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bonus.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +@Data +public class AccOperationHistory { + @ApiModelProperty("主键") + private Integer id; + @ApiModelProperty("用户编号") + private Long userId; + @ApiModelProperty("用户姓名") + @Excel(name = "用户姓名") + private String userName; + @ApiModelProperty("用户手机号") + @Excel(name = "用户手机号") + private String phone; + @ApiModelProperty("组织全称") + @Excel(name = "组织名称") + private String deptName; + @Excel(name = "组织全称") + private String deptFullName; + @ApiModelProperty("操作类型 1启用 2停用") + private Integer type; + @ApiModelProperty("操作类型") + @Excel(name = "操作类型") + private String typeName; + @ApiModelProperty("操作员") + @Excel(name = "操作员") + private String createBy; + @ApiModelProperty("操作时间") + @JSONField( + format = "yyyy-MM-dd HH:mm:ss" + ) + @Excel(name = "操作时间") + private LocalDateTime createTime; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccStatusChange.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccStatusChange.java new file mode 100644 index 0000000..c21ae9d --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/AccStatusChange.java @@ -0,0 +1,14 @@ +package com.bonus.canteen.core.account.domain.bo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class AccStatusChange { + private String userId; + private String nickName; + private Long merchantId; + private Integer accStatus; + private LocalDateTime updateDateTime; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccOperationQueryParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccOperationQueryParam.java new file mode 100644 index 0000000..33eafe1 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccOperationQueryParam.java @@ -0,0 +1,22 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.bonus.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AccOperationQueryParam extends BaseEntity { + @ApiModelProperty("操作事件 1启用 2停用") + private Integer type; + @ApiModelProperty("查询组织id集合") + private List deptIdList; + @ApiModelProperty("开始时间") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + private LocalDateTime endDateTime; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountBalanceEditParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountBalanceEditParam.java new file mode 100644 index 0000000..1e35117 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountBalanceEditParam.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.bonus.common.core.annotation.Excel; +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + +@Data +public class AccountBalanceEditParam { + @ApiModelProperty(value = "人员id") + private Long userId; + @ApiModelProperty(value = "有效截止日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate endDate; + @ApiModelProperty(value = "个人钱包最低余额限制金额") + private BigDecimal minWalletBalLimit; + @ApiModelProperty(value = "红包钱包最低余额限制金额") + private BigDecimal minSubBalLimit; + @ApiModelProperty(value = "账户状态 1正常 2冻结 3销户") + private Long accStatus; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountEnableDisableParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountEnableDisableParam.java new file mode 100644 index 0000000..73c6380 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountEnableDisableParam.java @@ -0,0 +1,16 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +public class AccountEnableDisableParam { + @ApiModelProperty(value = "人员id") + private Long userId; + @ApiModelProperty(value = "账户状态 1正常 2冻结 3销户") + private Long accStatus; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountInfoQueryParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountInfoQueryParam.java new file mode 100644 index 0000000..a15c9d5 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccountInfoQueryParam.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class AccountInfoQueryParam extends BaseEntity { + @ApiModelProperty("账户状态 1正常 2停用") + private List accStatusList; + @ApiModelProperty("筛选钱包类型 0-账户总余额 1-个人钱包 2-补贴钱包") + private Integer walletType; + @ApiModelProperty("查询组织id集合") + private List deptIdList; + @ApiModelProperty("开始时间") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + private LocalDateTime endDateTime; +// @ApiModelProperty("钱包最小金额") +// private BigDecimal walletMinAmount; +// @ApiModelProperty("钱包最大金额") +// private BigDecimal walletMaxAmount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java new file mode 100644 index 0000000..7bc2adc --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java @@ -0,0 +1,72 @@ +package com.bonus.canteen.core.account.domain.vo; + +import com.bonus.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +@Data +public class AccInfoDetailsVO { + @ApiModelProperty("账户id") + private Long accId; + @ApiModelProperty("人员id") + private Long userId; + @ApiModelProperty("操作时间") + @Excel(name = "操作时间") + private LocalDateTime updateTime; + @ApiModelProperty("用户姓名") + @Excel(name = "用户姓名") + private String nickName; + @ApiModelProperty("用户手机号") + @Excel(name = "用户手机号") + private String phoneNumber; + @ApiModelProperty("所属组织") + @Excel(name = "所属组织") + private String orgFullName; + @ApiModelProperty("用户类别") + private Integer userType; + @ApiModelProperty("用户部门") + private String deptName; + @ApiModelProperty("用户类别(展示)") + @Excel(name = "用户类别(展示)") + private String userTypeName; + @ApiModelProperty("账户总余额") + @Excel(name = "账户总余额") + private BigDecimal accBalTotal; + @ApiModelProperty("账户可用总余额(不包含冻结金额)") + private BigDecimal accAvailableBal; + @ApiModelProperty("个人钱包余额/分") + @Excel(name = "个人钱包余额/分") + private BigDecimal walletBal; + @ApiModelProperty("补贴钱包余额/分") + @Excel(name = "补贴钱包余额/分") + private BigDecimal subsidyBal; + @ApiModelProperty("红包余额") + @Excel(name = "红包余额") + private BigDecimal redEnvelope; + @ApiModelProperty("冻结金额") + @Excel(name = "冻结金额") + private BigDecimal accFreezeBalTotal; + @ApiModelProperty("个人钱包允许最低余额限制") + @Excel(name = "个人钱包允许最低余额限制") + private BigDecimal minWalletBalLimit; + @ApiModelProperty("补贴钱包允许最低余额限制") + @Excel(name = "补贴钱包允许最低余额限制") + private BigDecimal minSubBalLimit; + @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") + private Integer accStatus; + @ApiModelProperty("账户状态名称") + @Excel(name = "账户状态名称") + private String accStatusName; + @ApiModelProperty("账户有效期") + @Excel(name = "账户有效期") + private LocalDate endDate; + @ApiModelProperty("积分") + private Long scope; + @ApiModelProperty("个人钱包冻结金额") + private BigDecimal frozenWallet; + @ApiModelProperty("补贴冻结金额") + private BigDecimal frozenSub; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoInvalidSumVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoInvalidSumVO.java new file mode 100644 index 0000000..a2cc7bc --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoInvalidSumVO.java @@ -0,0 +1,12 @@ +package com.bonus.canteen.core.account.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AccInfoInvalidSumVO { + @ApiModelProperty("当天过期数量") + private Integer expiredCount; + @ApiModelProperty("当天注销数量") + private Integer cancelCount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccWalletInfoVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccWalletInfoVO.java new file mode 100644 index 0000000..8a99e6a --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccWalletInfoVO.java @@ -0,0 +1,18 @@ +package com.bonus.canteen.core.account.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class AccWalletInfoVO { + private Long userId; + private Long accId; + private Integer walletId; + private BigDecimal walletBal; + private BigDecimal limitBalance; + private BigDecimal frozenBalance; + private BigDecimal lastSubsidyAmount; + private LocalDateTime lastSubsidyTime; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java index b00c82e..b98f987 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java @@ -1,7 +1,14 @@ package com.bonus.canteen.core.account.mapper; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import org.apache.ibatis.annotations.Param; import com.bonus.canteen.core.account.domain.AccInfoVo; /** @@ -10,7 +17,7 @@ import com.bonus.canteen.core.account.domain.AccInfoVo; * @author xsheng * @date 2025-04-05 */ -public interface AccInfoMapper { +public interface AccInfoMapper extends BaseMapper { /** * 查询账户资料 * @@ -60,4 +67,13 @@ public interface AccInfoMapper { * @return 结果 */ public int deleteAccInfoByIds(Long[] ids); + + Integer queryAccInfoInvalidSum(@Param("startDateTime") LocalDateTime startDateTime, @Param("endDateTime") LocalDateTime endDateTime, @Param("accStatus") Integer accStatus); + + List queryAccInfoDetails(@Param("accountInfoQueryParam") AccountInfoQueryParam accountInfoQueryParam, + @Param("encryptedSearchValue") String encryptedSearchValue); + + AccInfoDetailsVO queryAccInfoBalanceSum(@Param("accountInfoQueryParam") AccountInfoQueryParam accountInfoQueryParam); + + void updateAccInfoEndDateByUserId(LocalDate endDate, List userIds, String updateBy); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccOperationHistoryMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccOperationHistoryMapper.java new file mode 100644 index 0000000..3590dec --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccOperationHistoryMapper.java @@ -0,0 +1,15 @@ +package com.bonus.canteen.core.account.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bonus.canteen.core.account.domain.bo.AccOperationHistory; +import com.bonus.canteen.core.account.domain.param.AccOperationQueryParam; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface AccOperationHistoryMapper extends BaseMapper { + List queryPageAccOperationRecord(@Param("param") AccOperationQueryParam param, + @Param("encryptedSearchValue") String encryptedSearchValue); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java index 91997df..f6081a6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java @@ -1,8 +1,11 @@ package com.bonus.canteen.core.account.mapper; +import java.math.BigDecimal; +import java.time.LocalDate; import java.util.List; import com.bonus.canteen.core.account.domain.AccWalletInfo; import org.apache.ibatis.annotations.Param; +import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO; /** * 钱包详情信息Mapper接口 @@ -19,6 +22,8 @@ public interface AccWalletInfoMapper { */ public AccWalletInfo selectAccWalletInfoByUserId(Long userId); + List selectAccWalletInfoByUserIds(@Param("userIds") List userIds); + /** * 查询钱包详情信息列表 * @@ -60,4 +65,11 @@ public interface AccWalletInfoMapper { * @return 结果 */ public int deleteAccWalletInfoByUserIds(Long[] userIds); + + void updateMinBalanceByUserId(@Param("minBalance") BigDecimal limitBalance, + @Param("walletId") Integer walletId, + @Param("userIds") List userIds, + @Param("updateBy") String updateBy, + @Param("updateTime") LocalDate updateTime); + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java new file mode 100644 index 0000000..ad06386 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java @@ -0,0 +1,103 @@ +package com.bonus.canteen.core.account.mq; + +import com.bonus.canteen.core.account.constants.AccountStatusEnum; +import com.bonus.canteen.core.account.domain.bo.AccStatusChange; +import com.bonus.canteen.core.common.utils.TenantContextHolder; +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.houqin.mq.constant.LeMqConstant; +import com.bonus.common.houqin.mq.util.MqUtil; +import com.bonus.common.houqin.utils.JacksonUtil; +import com.bonus.system.api.RemoteUserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Component +public class AccMqSender { + private static final Logger log = LoggerFactory.getLogger(AccMqSender.class); + @Resource + private RemoteUserService remoteUserService; + public void accChangeMQ(List userIds, Integer accStatus) { + // 校验输入参数 + if (userIds == null || accStatus == null) { + log.warn("用户ID列表或账户状态为空,无法发送MQ。userIds: {}, accStatus: {}", userIds, accStatus); + return; + } + + if (!AccountStatusEnum.DEACTIVATE.getKey().equals(accStatus)) { + log.warn("账户状态不在允许范围内,无法发送MQ。accStatus: {}", accStatus); + return; + } + + try { + log.info("账户状态变动发送mq-入参人员数量: {} 账户状态: {}", userIds.size(), accStatus); + + AjaxResult resultList = remoteUserService.getUsers(userIds.toArray(EMPTY_LONG_ARRAY), SecurityConstants.INNER); + + // 校验远程调用结果 + if (resultList == null || resultList.get(AjaxResult.DATA_TAG) == null) { + log.error("远程用户服务返回数据为空"); + return; + } + + List sysUserList = resultList.getDataAs(List.class); + if (sysUserList == null || sysUserList.isEmpty()) { + log.warn("用户列表为空,无需发送MQ"); + return; + } + + Long tenantId = TenantContextHolder.getTenantId(); + if (tenantId == null) { + log.error("租户ID为空,无法发送MQ"); + return; + } + LocalDateTime now = LocalDateTime.now(); + sysUserList.stream() + .filter(Objects::nonNull) + .map(item -> processUserItem((Map) item, tenantId, accStatus, now)) + .filter(Objects::nonNull) + .forEach(accStatusChange -> sendMqMessage((AccStatusChange)accStatusChange)); + + } catch (Exception e) { + log.error("账户状态变动发送MQ失败", e); + } + } + + private AccStatusChange processUserItem(Map map, Long tenantId, Integer accStatus, LocalDateTime now) { + if (map == null || !map.containsKey("userId") || !map.containsKey("userName")) { + log.warn("用户数据不完整,跳过处理。map: {}", map); + return null; + } + + AccStatusChange accStatusChange = new AccStatusChange(); + accStatusChange.setUserId((String)map.get("userId")); + accStatusChange.setNickName((String) map.get("nickName")); + accStatusChange.setMerchantId(tenantId); + accStatusChange.setAccStatus(accStatus); + accStatusChange.setUpdateDateTime(now); + return accStatusChange; + } + + private void sendMqMessage(AccStatusChange accStatusChange) { + String jsonString = JacksonUtil.writeValueAsString(accStatusChange); + if (jsonString == null) { + log.error("序列化账户状态变更对象失败:{}", accStatusChange); + return; + } + + log.info("账户状态变动发送mq内容:{}", jsonString); + try { + MqUtil.send(jsonString, LeMqConstant.Topic.ACC_STATUS_CHANGE); + } catch (Exception e) { + log.error("发送MQ消息失败:{}", jsonString, e); + } + } + private static final Long[] EMPTY_LONG_ARRAY = new Long[0]; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccOperationHistoryService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccOperationHistoryService.java new file mode 100644 index 0000000..e319056 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccOperationHistoryService.java @@ -0,0 +1,12 @@ +package com.bonus.canteen.core.account.service; + + +import com.bonus.canteen.core.account.domain.bo.AccOperationHistory; +import com.bonus.canteen.core.account.domain.param.AccOperationQueryParam; + +import java.util.List; + +public interface AccOperationHistoryService { + List selectAccOperationHistory(AccOperationQueryParam param); + void addAccOperationHistory(Long userId, Integer type); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index 38f2671..464f9d5 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -4,6 +4,11 @@ import java.util.List; import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.domain.AccInfoVo; import com.bonus.canteen.core.account.domain.WalletBalanceVO; +import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam; +import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam; +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.account.domain.vo.AccInfoInvalidSumVO; import com.bonus.system.api.domain.SysUser; /** @@ -27,7 +32,7 @@ public interface IAccInfoService { * @param accInfo 账户资料 * @return 账户资料集合 */ - public List selectAccInfoList(AccInfo accInfo); + public List selectAccInfoList(AccountInfoQueryParam accountInfoQueryParam); // public List selectAccInfoVoList(AccInfo accInfo); @@ -45,7 +50,7 @@ public interface IAccInfoService { * @param accInfo 账户资料 * @return 结果 */ - public int updateAccInfo(AccInfo accInfo); + public void updateAccInfo(AccountBalanceEditParam accountBalanceEditParam); /** * 批量删除账户资料 @@ -55,12 +60,9 @@ public interface IAccInfoService { */ public int deleteAccInfoByIds(Long[] ids); - /** - * 删除账户资料信息 - * - * @param users 账户资料主键 - * @return 结果 - */ + AccInfoInvalidSumVO queryAccInfoInvalidSum(); + AccInfoDetailsVO queryAccInfoBalanceSum(AccountInfoQueryParam accountInfoQueryParam); + void editAccountStatus(AccountEnableDisableParam accountEnableDisableParam); public int deleteAccInfoByUserIds(List users); public int syncAccInfo(SysUser sysUser); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java index d172628..4d8f80b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccWalletInfoService.java @@ -1,7 +1,11 @@ package com.bonus.canteen.core.account.service; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; + import com.bonus.canteen.core.account.domain.AccWalletInfo; +import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO; /** * 钱包详情信息Service接口 @@ -59,4 +63,9 @@ public interface IAccWalletInfoService { * @return 结果 */ public int deleteAccWalletInfoByUserId(Long userId); + + Map> selectAccWalletInfoByUserIds(List userIds); + + void updateMinBalance(List userIds, Integer walletId, BigDecimal minBalance); + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 549f36d..fad1728 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -1,6 +1,31 @@ package com.bonus.canteen.core.account.service.impl; import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.bonus.canteen.core.account.constants.AccWalletIdEnum; +import com.bonus.canteen.core.account.constants.AccountStatusEnum; +import com.bonus.canteen.core.account.domain.*; +import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam; +import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam; +import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO; +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.account.domain.vo.AccInfoInvalidSumVO; +import com.bonus.canteen.core.account.mq.AccMqSender; +import com.bonus.canteen.core.account.service.AccOperationHistoryService; +import com.bonus.canteen.core.account.service.IAccWalletInfoService; import java.util.ArrayList; import java.util.List; @@ -11,8 +36,6 @@ import com.bonus.canteen.core.account.domain.AccInfoVo; import com.bonus.canteen.core.account.domain.AccWalletInfo; import com.bonus.canteen.core.account.domain.WalletBalanceVO; import com.bonus.canteen.core.account.enums.AccStatusEnum; -import com.bonus.canteen.core.account.enums.AccWalletIdEnum; -import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; @@ -20,17 +43,23 @@ import com.bonus.common.houqin.constant.LeCodeUseSceneEnum; import com.bonus.common.houqin.constant.SourceTypeEnum; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.SysUser; +import com.bonus.common.houqin.utils.SM4EncryptUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.core.task.AsyncTaskExecutor; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccInfoMapper; -import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.service.IAccInfoService; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import javax.annotation.Resource; + /** * 账户资料Service业务层处理 * @@ -40,10 +69,22 @@ import org.springframework.web.bind.annotation.RequestBody; @Service @Slf4j public class AccInfoServiceImpl implements IAccInfoService { + private static final Logger log = LoggerFactory.getLogger(AccInfoServiceImpl.class); + + @Autowired + private IAccWalletInfoService accWalletInfoService; @Autowired private AccInfoMapper accInfoMapper; @Autowired - private IAccWalletInfoService accWalletInfoService; + private AccOperationHistoryService accOperationHistoryService; + @Autowired + private AccMqSender accMqSender; + + @Resource( + name = "smartCanteenTaskExecutor" + ) + @Lazy + private AsyncTaskExecutor asyncTaskExecutor; /** * 查询账户资料 @@ -58,13 +99,14 @@ public class AccInfoServiceImpl implements IAccInfoService { /** * 查询账户资料列表 - * - * @param accInfo 账户资料 - * @return 账户资料 + * */ @Override - public List selectAccInfoList(AccInfo accInfo) { - return accInfoMapper.selectAccInfoList(accInfo); + public List selectAccInfoList(AccountInfoQueryParam accountInfoQueryParam) { + String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(accountInfoQueryParam.getSearchValue()); + List list = accInfoMapper.queryAccInfoDetails(accountInfoQueryParam, encryptedSearchValue); + handleResult(list); + return list; } // @Override @@ -90,20 +132,35 @@ public class AccInfoServiceImpl implements IAccInfoService { /** * 修改账户资料 - * - * @param accInfo 账户资料 - * @return 结果 + * */ @Override - public int updateAccInfo(AccInfo accInfo) { - accInfo.setUpdateTime(DateUtils.getNowDate()); + @Transactional(rollbackFor = Exception.class) + public void updateAccInfo(AccountBalanceEditParam accountBalanceEditParam) { + LocalDate accEndDate = accountBalanceEditParam.getEndDate(); + Map walletLimits = new HashMap<>(); + walletLimits.put(AccWalletIdEnum.WALLET, accountBalanceEditParam.getMinWalletBalLimit()); + walletLimits.put(AccWalletIdEnum.SUBSIDY, accountBalanceEditParam.getMinSubBalLimit()); + for (Map.Entry entry : walletLimits.entrySet()) { + accWalletInfoService.updateMinBalance(ListUtil.toList(accountBalanceEditParam.getUserId()), entry.getKey().getKey(), entry.getValue()); + } + updateAccountEndDate(ListUtil.toList(accountBalanceEditParam.getUserId()), accEndDate); + } + + protected void updateAccountEndDate(List userIds, LocalDate accEndDate) { + if (ObjectUtil.isEmpty(userIds)) { + log.info("更新账户有效期-账户信息为空"); + return; + } try { - return accInfoMapper.updateAccInfo(accInfo); + accInfoMapper.updateAccInfoEndDateByUserId(accEndDate, userIds, SecurityUtils.getUsername()); } catch (Exception e) { - throw new ServiceException("错误信息描述"); + log.error("[更新账户有效期失败", e); + throw new ServiceException("更新账户有效期失败"); } } + /** * 批量删除账户资料 * @@ -165,6 +222,103 @@ public class AccInfoServiceImpl implements IAccInfoService { return "bns{\"s\":" + SourceTypeEnum.WECHAT_SMALL_PRO.getKey() + ",\"y\":" + LeCodeUseSceneEnum.PAY.key() + ",\"p\":\"" + userId + "\",\"t\":" + "\"" + stime + "\"}"; } + public AccInfoInvalidSumVO queryAccInfoInvalidSum() { +// LocalDateTime now = LocalDateTime.now(); +// LocalDateTime startOfDay = now.toLocalDate().atTime(LocalTime.MIN); +// +// CompletableFuture cancelCountFuture = CompletableFuture.supplyAsync( +// () -> accInfoMapper.queryAccInfoInvalidSum(startOfDay, now, AccountStatusEnum.CANCEL.getKey()), +// this.asyncTaskExecutor +// ).exceptionally(ex -> { +// log.error("Failed to get cancel count", ex); +// return 0; +// }); +// +// CompletableFuture expiredCountFuture = CompletableFuture.supplyAsync( +// () -> accInfoMapper.queryAccInfoInvalidSum(startOfDay, now, AccountStatusEnum.OVERDUE.getKey()), +// this.asyncTaskExecutor +// ).exceptionally(ex -> { +// log.error("Failed to get expired count", ex); +// return 0; +// }); +// +// return cancelCountFuture.thenCombine(expiredCountFuture, (cancel, expired) -> { +// AccInfoInvalidSumVO accInfoInvalidSumVO = new AccInfoInvalidSumVO(); +// accInfoInvalidSumVO.setCancelCount(cancel); +// accInfoInvalidSumVO.setExpiredCount(expired); +// return accInfoInvalidSumVO; +// } +// ).join(); + return null; + } + private void handleResult(List list) { + if (CollUtil.isEmpty(list)) { + return; + } + + List custIdList = list.stream() + .map(AccInfoDetailsVO::getUserId) + .collect(Collectors.toList()); + Map> walletMap = accWalletInfoService.selectAccWalletInfoByUserIds(custIdList); + + list.forEach(item -> { + List walletInfoList = walletMap.getOrDefault(item.getUserId(), ListUtil.empty()); + setWalletBalances(item, walletInfoList); + setTotalBalances(item, walletInfoList); + }); + } + + private void setWalletBalances(AccInfoDetailsVO item, List walletInfoList) { + for (AccWalletInfoVO wallet : walletInfoList) { + switch (AccWalletIdEnum.getEnum(wallet.getWalletId())) { + case WALLET: + item.setWalletBal(wallet.getWalletBal()); + item.setFrozenWallet(wallet.getFrozenBalance()); + item.setMinWalletBalLimit(wallet.getLimitBalance()); + break; + case SUBSIDY: + item.setSubsidyBal(wallet.getWalletBal()); + item.setFrozenSub(wallet.getFrozenBalance()); + item.setMinSubBalLimit(wallet.getLimitBalance()); + break; + default: + break; + } + } + } + private void setTotalBalances(AccInfoDetailsVO item, List walletInfoList) { + BigDecimal frozenBalanceAll = walletInfoList.stream() + .map(AccWalletInfoVO::getFrozenBalance) + .filter(ObjectUtil::isNotNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal accAvailableBal = walletInfoList.stream() + .map(AccWalletInfoVO::getWalletBal) + .filter(ObjectUtil::isNotNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + item.setAccBalTotal(NumberUtil.add(accAvailableBal, frozenBalanceAll)); + item.setAccAvailableBal(accAvailableBal); + item.setAccFreezeBalTotal(frozenBalanceAll); + } + + public AccInfoDetailsVO queryAccInfoBalanceSum(AccountInfoQueryParam accountInfoQueryParam) { + return accInfoMapper.queryAccInfoBalanceSum(accountInfoQueryParam); + } + + @Transactional(rollbackFor = {Exception.class}) + public void editAccountStatus(AccountEnableDisableParam accountEnableDisableParam) { + int flag = accInfoMapper.update((((Wrappers.lambdaUpdate(AccInfo.class) + .set(AccInfo::getAccStatus, accountEnableDisableParam.getAccStatus())) + .set(AccInfo::getUpdateBy, SecurityUtils.getUserId())) + .set(AccInfo::getUpdateTime, LocalDateTime.now())) + .eq(AccInfo::getUserId, accountEnableDisableParam.getUserId())); + if (flag > 0) { + this.accOperationHistoryService.addAccOperationHistory(accountEnableDisableParam.getUserId(), accountEnableDisableParam.getAccStatus().intValue()); + this.accMqSender.accChangeMQ(Collections.singletonList(accountEnableDisableParam.getUserId()), accountEnableDisableParam.getAccStatus().intValue()); + } + } + + public WalletBalanceVO queryWalletBalance(AccInfo accInfo) { log.info("查询账户余额入参={}", JSONUtil.toJsonStr(accInfo)); AccInfoVo accInfoVO = accInfoMapper.selectAccInfoVo(accInfo); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java new file mode 100644 index 0000000..9b1e967 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java @@ -0,0 +1,45 @@ +package com.bonus.canteen.core.account.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bonus.canteen.core.account.domain.bo.AccOperationHistory; +import com.bonus.canteen.core.account.domain.param.AccOperationQueryParam; +import com.bonus.canteen.core.account.mapper.AccOperationHistoryMapper; +import com.bonus.canteen.core.account.service.AccOperationHistoryService; +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.houqin.utils.SM4EncryptUtils; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.system.api.RemoteUserService; +import com.bonus.system.api.domain.SysUser; +import com.github.pagehelper.page.PageMethod; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +@Service +public class AccOperationHistoryServiceImpl extends ServiceImpl implements AccOperationHistoryService { + @Resource + private RemoteUserService remoteUserService; + public List selectAccOperationHistory(AccOperationQueryParam param) { + String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue()); + return this.baseMapper.queryPageAccOperationRecord(param, encryptedSearchValue); + } + + public void addAccOperationHistory(Long userId, Integer type) { + AjaxResult userResult = remoteUserService.getInfo(userId , SecurityConstants.INNER); + if(Objects.nonNull(userResult)) { + SysUser sysUser = userResult.getDataAs(SysUser.class); + AccOperationHistory accOperationRecord = new AccOperationHistory(); + accOperationRecord.setType(type); + accOperationRecord.setUserId(userId); + accOperationRecord.setUserName(sysUser.getUserName()); + accOperationRecord.setPhone(sysUser.getPhonenumber()); + accOperationRecord.setCreateBy(SecurityUtils.getUsername()); + accOperationRecord.setCreateTime(LocalDateTime.now()); + this.baseMapper.insert(accOperationRecord); + } + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java index 938e31f..2af21c2 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java @@ -1,9 +1,18 @@ package com.bonus.canteen.core.account.service.impl; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import cn.hutool.core.util.ObjectUtil; +import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.security.utils.SecurityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccWalletInfoMapper; @@ -18,6 +27,8 @@ import com.bonus.canteen.core.account.service.IAccWalletInfoService; */ @Service public class AccWalletInfoServiceImpl implements IAccWalletInfoService { + private static final Logger log = LoggerFactory.getLogger(AccWalletInfoServiceImpl.class); + @Autowired private AccWalletInfoMapper accWalletInfoMapper; @@ -78,11 +89,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { @Override public int updateAccWalletInfo(AccWalletInfo accWalletInfo) { accWalletInfo.setUpdateTime(DateUtils.getNowDate()); - try { - return accWalletInfoMapper.updateAccWalletInfo(accWalletInfo); - } catch (Exception e) { - throw new ServiceException("错误信息描述"); - } + return accWalletInfoMapper.updateAccWalletInfo(accWalletInfo); } /** @@ -106,4 +113,38 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { public int deleteAccWalletInfoByUserId(Long userId) { return accWalletInfoMapper.deleteAccWalletInfoByUserId(userId); } + + public Map> selectAccWalletInfoByUserIds(List userIds) { + List walletInfoList = accWalletInfoMapper.selectAccWalletInfoByUserIds(userIds); + return walletInfoList.stream() + .collect(Collectors.groupingBy(AccWalletInfoVO::getUserId)); + } + + @Override + public void updateMinBalance(List userIds, Integer walletId, BigDecimal minBalance) { + if (ObjectUtil.isNull(minBalance)) { + log.warn("修改钱包最低余额限制-最低余额不能为空"); + return; + } + + if (ObjectUtil.isNull(walletId)) { + log.warn("修改钱包最低余额限制-钱包编号为空"); + return; + } + + if (ObjectUtil.isEmpty(userIds)) { + log.warn("修改钱包最低余额限制-用户编号为空"); + return; + } + + try { + accWalletInfoMapper.updateMinBalanceByUserId(minBalance, walletId, userIds, + SecurityUtils.getUserId().toString(), DateUtils.toLocalDate(new Date())); + } catch (Exception e) { + log.error("修改钱包最低余额限制失败", e); + throw new ServiceException("修改钱包最低余额限制失败"); + } + } + + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/AsyncConfig.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/AsyncConfig.java new file mode 100644 index 0000000..6c35b97 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/AsyncConfig.java @@ -0,0 +1,50 @@ +package com.bonus.canteen.core.common.threadPool; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.AsyncTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.ThreadPoolExecutor; + +@Configuration +public class AsyncConfig { + + // 核心线程数和最大线程数的倍数 + private static final int THREAD_POOL_SIZE_MULTIPLIER = 2; + + // 线程池队列容量 + @Value("${async.threadPool.queueCapacity:1000}") + private int queueCapacity; + + // 线程池线程存活时间(秒) + @Value("${async.threadPool.keepAliveSeconds:60}") + private int keepAliveSeconds; + + // 线程池关闭时等待任务完成的时间(秒) + @Value("${async.threadPool.awaitTerminationSeconds:60}") + private int awaitTerminationSeconds; + + @Bean("smartCanteenTaskExecutor") + public AsyncTaskExecutor taskExecutor() { + int corePoolSize = Runtime.getRuntime().availableProcessors() * THREAD_POOL_SIZE_MULTIPLIER; + ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); + taskExecutor.setCorePoolSize(corePoolSize); + taskExecutor.setMaxPoolSize(corePoolSize); + taskExecutor.setThreadNamePrefix("smart-canteen-async-pool"); + taskExecutor.setQueueCapacity(queueCapacity); + taskExecutor.setKeepAliveSeconds(keepAliveSeconds); + taskExecutor.setWaitForTasksToCompleteOnShutdown(true); + taskExecutor.setAwaitTerminationSeconds(awaitTerminationSeconds); + taskExecutor.setTaskDecorator(new TenantTaskDecorator()); + taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + try { + taskExecutor.initialize(); + } catch (Exception e) { + throw new RuntimeException("Failed to initialize ThreadPoolTaskExecutor", e); + } + + return taskExecutor; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/TenantTaskDecorator.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/TenantTaskDecorator.java new file mode 100644 index 0000000..ee1599e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/threadPool/TenantTaskDecorator.java @@ -0,0 +1,29 @@ +package com.bonus.canteen.core.common.threadPool; + +import com.bonus.canteen.core.common.utils.TenantContextHolder; +import com.github.pagehelper.PageHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.task.TaskDecorator; + +public class TenantTaskDecorator implements TaskDecorator { + private static final Logger log = LoggerFactory.getLogger(TenantTaskDecorator.class); + + @Override + public Runnable decorate(Runnable runnable) { + Long tenantId = TenantContextHolder.getTenantId(); + return () -> { + try { + TenantContextHolder.setTenantId(tenantId); + runnable.run(); + } finally { + try { + TenantContextHolder.clear(); + PageHelper.clearPage(); + } catch (Exception e) { + log.error("Failed to clear tenant context or page helper", e); + } + } + }; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/utils/TenantContextHolder.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/utils/TenantContextHolder.java new file mode 100644 index 0000000..f6dd117 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/utils/TenantContextHolder.java @@ -0,0 +1,21 @@ +package com.bonus.canteen.core.common.utils; + +public final class TenantContextHolder { + private static final ThreadLocal THREAD_LOCAL_TENANT = new InheritableThreadLocal(); + + public static Long getTenantId() { + return (Long)THREAD_LOCAL_TENANT.get(); + } + + public static void setTenantId(Long tenantId) { + THREAD_LOCAL_TENANT.set(tenantId); + } + + public static void clear() { + THREAD_LOCAL_TENANT.remove(); + } + + private TenantContextHolder() { + throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml index 7b8d738..856c1dc 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml @@ -181,7 +181,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and reserved3 = #{reserved3} - + + SELECT count( a.acc_id ) FROM acc_info a + WHERE a.acc_status = #{accStatus} AND a.update_time BETWEEN #{startDateTime} and #{endDateTime} + + + + + + + + + t1.acc_status in + + #{accStatus} + + + and (t2.nick_name = #{accountInfoQueryParam.searchValue} + or t2.phonenumber = #{encryptedSearchValue} + or t2.nick_name_like LIKE CONCAT('%',#{accountInfoQueryParam.searchValue},'%') + ) + + + and t2.dept_id in + + #{deptId} + + + + and t1.uptime = ]]> #{accountInfoQueryParam.startDateTime} + + + and t1.uptime #{accountInfoQueryParam.endDateTime} + + + AND EXISTS( + SELECT null FROM + ( + SELECT + user_id, + SUM( CASE WHEN wallet_id = 1 THEN wallet_bal ELSE 0 END ) AS walletBal, + SUM( CASE WHEN wallet_id = 2 THEN wallet_bal ELSE 0 END ) AS subsidyBal, + SUM( a.wallet_bal ) + SUM( a.frozen_balance ) accBalTotal + FROM + acc_wallet_info a + GROUP BY + user_id + ) AS t4 + + t4.user_id = t1.user_id + + + ) + + + + + + update acc_info + set end_date = #{endDate}, + update_by = #{updateBy}, + update_time = now() + where user_id in + + #{userId} + + + \ No newline at end of file diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccOperationHistoryMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccOperationHistoryMapper.xml new file mode 100644 index 0000000..c31dfa7 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccOperationHistoryMapper.xml @@ -0,0 +1,45 @@ + + + + + diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml index 279eca9..5f3a92d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml @@ -40,6 +40,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where user_id = #{userId} + + insert into acc_wallet_info @@ -115,4 +132,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{userId} + + + UPDATE + acc_wallet_info + SET limit_balance = #{minBalance}, + update_by = #{updateBy}, + update_time = #{updateTime} + + + AND user_id IN + + #{userId} + + + AND wallet_id = #{walletId} + + \ No newline at end of file From e79fd2887a32e90dd70834cd8e825144b038b021 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 13:59:07 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E9=A3=9F=E5=A0=82?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/alloc/domain/AllocCanteen.java | 5 ++ .../canteen/core/alloc/domain/AllocStall.java | 10 ++++ .../mapper/alloc/AllocCanteenMapper.xml | 45 ++++++++------- .../mapper/alloc/AllocStallMapper.xml | 56 +++++++++++-------- 4 files changed, 72 insertions(+), 44 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java index cffafc6..0cd4593 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java @@ -34,6 +34,11 @@ public class AllocCanteen extends BaseEntity { @ApiModelProperty(value = "区域id") private Long areaId; + /** 当前区域名称 */ + @Excel(name = "当前区域名称") + @ApiModelProperty(value = "当前区域名称") + private String areaName; + /** 食堂业务类型 1-食堂 2-超市 */ @Excel(name = "食堂业务类型 1-食堂 2-超市") @ApiModelProperty(value = "食堂业务类型 1-食堂 2-超市") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java index 2426881..07d4208 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java @@ -34,11 +34,21 @@ public class AllocStall extends BaseEntity { @ApiModelProperty(value = "区域id") private Long areaId; + /** 当前区域名称 */ + @Excel(name = "当前区域名称") + @ApiModelProperty(value = "当前区域名称") + private String areaName; + /** 食堂id */ @Excel(name = "食堂id") @ApiModelProperty(value = "食堂id") private Long canteenId; + /** 食堂名称 */ + @Excel(name = "食堂名称") + @ApiModelProperty(value = "食堂名称") + private String canteenName; + /** 档口业务类型 1-档口 */ @Excel(name = "档口业务类型 1-档口") @ApiModelProperty(value = "档口业务类型 1-档口") diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocCanteenMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocCanteenMapper.xml index 3278610..63ef74f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocCanteenMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocCanteenMapper.xml @@ -32,36 +32,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select canteen_id, canteen_name, area_id, canteen_type, director, contact_tel, business_state, start_business_time, end_business_time, img_url, if_enable_pay, pay_types, if_enable_delivery, deliveries, if_enable_order, if_book, if_reserve, if_enable_pay_code, pay_code_url, del_flag, create_by, create_time, update_by, update_time, remark from alloc_canteen + select ac.canteen_id, ac.canteen_name, aa.area_name, ac.area_id, ac.canteen_type, ac.director, ac.contact_tel, ac.business_state, + ac.start_business_time, ac.end_business_time, ac.img_url, ac.if_enable_pay, ac.pay_types, ac.if_enable_delivery, + ac.deliveries, ac.if_enable_order, ac.if_book, ac.if_reserve, ac.if_enable_pay_code, ac.pay_code_url, ac.del_flag, + ac.create_by, ac.create_time, ac.update_by, ac.update_time, ac.remark + from alloc_canteen ac + left join alloc_area aa on ac.area_id = aa.area_id diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocStallMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocStallMapper.xml index 542fd6a..dba8e1b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocStallMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/AllocStallMapper.xml @@ -35,40 +35,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select stall_id, stall_name, area_id, canteen_id, stall_type, third_stall_id, director, contact_tel, main_project, business_state, start_business_time, end_business_time, if_use_call_num, on_line_meal_code_prefix, off_line_meal_code_prefix, if_enable_delivery, deliveries, if_enable_order, img_url, if_book, if_reserve, if_enable_pay_code, pay_code_url, del_flag, create_by, create_time, update_by, update_time from alloc_stall + select ast.stall_id, ast.stall_name, ast.area_id, ast.canteen_id, ac.canteen_name, aa.area_name, + ast.stall_type, ast.third_stall_id, ast.director, ast.contact_tel, + ast.main_project, ast.business_state, ast.start_business_time, ast.end_business_time, ast.if_use_call_num, + ast.on_line_meal_code_prefix, ast.off_line_meal_code_prefix, ast.if_enable_delivery, ast.deliveries, + ast.if_enable_order, ast.img_url, ast.if_book, ast.if_reserve, ast.if_enable_pay_code, ast.pay_code_url, + ast.del_flag, ast.create_by, ast.create_time, ast.update_by, ast.update_time + from alloc_stall ast + left join alloc_canteen ac on ast.canteen_id = ac.canteen_id + left join alloc_area aa on ac.area_id = aa.area_id From 4a2c4575fe43bad13857a8b8f710e46f317420e9 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 15:27:32 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../houqin/constant/GlobalConstants.java | 2 + .../account/constants/AccTradeStateEnum.java | 26 ++++++++++++ .../account/constants/AccTradeTypeEnum.java | 36 ++++++++++++++++ .../core/account/mapper/AccTradeMapper.java | 4 ++ .../account/service/IAccTradeService.java | 5 +++ .../service/impl/AccTradeServiceImpl.java | 26 ++++++++++++ .../service/impl/AllocCanteenServiceImpl.java | 10 +++++ .../core/pay/controller/NotifyCotroller.java | 38 +++++++++++++++-- .../core/pay/controller/PayCotroller.java | 42 +++++++++++++++---- .../canteen/core/pay/dto/AccTradeVo.java | 35 ++++++++++++++++ .../bonus/canteen/core/pay/dto/UpOrder.java | 17 -------- 11 files changed, 212 insertions(+), 29 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java delete mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java diff --git a/bonus-common-biz/src/main/java/com/bonus/common/houqin/constant/GlobalConstants.java b/bonus-common-biz/src/main/java/com/bonus/common/houqin/constant/GlobalConstants.java index 3e746ab..fbf5dcf 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/houqin/constant/GlobalConstants.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/houqin/constant/GlobalConstants.java @@ -6,6 +6,8 @@ package com.bonus.common.houqin.constant; */ public class GlobalConstants { public static final Long TENANT_ID = 99999999L; + + public static final String PERSONAL_RECHARGE = "PERSONAL_RECHARGE"; /** * 字符串 MSIE */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java new file mode 100644 index 0000000..1427155 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java @@ -0,0 +1,26 @@ +package com.bonus.canteen.core.account.constants; + +import cn.hutool.core.collection.ListUtil; + +public enum AccTradeStateEnum { + CREATE(1, "待生效"), + TAKE_EFFECT(2, "生效"), + CANCELED(3, "已撤销"), + CLOSE(4, "关闭"); + + private final Integer key; + private final String desc; + + private AccTradeStateEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java new file mode 100644 index 0000000..f5d6b54 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java @@ -0,0 +1,36 @@ +package com.bonus.canteen.core.account.constants; + +public enum AccTradeTypeEnum { + RECHARGE(10, "充值"), + RECHARGE_GIFT(11, "赠送"), + REVOKE_RECHARGE_GIFT(12, "撤销赠送"), + REVOKE_RECHARGE(40, "撤销充值"), + SUBSIDY(20, "补贴"), + REVOKE_SUBSIDY(50, "撤销补贴"), + CLEAR(100, "清空"), + LUCK_MONEY(140, "红包发放"), + WITHDRAW(30, "提现"), + TRANSFER_OUT(60, "转出"), + TRANSFER_IN(70, "转入"), + FREEZE(80, "冻结"), + UN_FREEZE(90, "解冻"), + CONSUME(110, "消费"), + CONSUME_REPAIR(120, "消费补扣"), + CONSUME_REFUND(130, "消费退款"); + + private final Integer key; + private final String desc; + + private AccTradeTypeEnum(Integer key, String desc) { + this.key = key; + this.desc = desc; + } + + public Integer getKey() { + return this.key; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java index 81195e8..d70a764 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java @@ -34,6 +34,8 @@ public interface AccTradeMapper { */ public int insertAccTrade(AccTrade accTrade); +// public int insertAccTradeVo(AccTradeVo accTrade); + /** * 修改账户交易记录 * @@ -42,6 +44,8 @@ public interface AccTradeMapper { */ public int updateAccTrade(AccTrade accTrade); +// public int updateAccTradeVo(AccTradeVo accTrade); + /** * 删除账户交易记录 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java index c7fd165..fa2e473 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.service; import java.util.List; import com.bonus.canteen.core.account.domain.AccTrade; +import com.bonus.canteen.core.pay.dto.AccTradeVo; /** * 账户交易记录Service接口 @@ -34,6 +35,8 @@ public interface IAccTradeService { */ public int insertAccTrade(AccTrade accTrade); + public int insertAccTradeVo(AccTradeVo accTrade); + /** * 修改账户交易记录 * @@ -42,6 +45,8 @@ public interface IAccTradeService { */ public int updateAccTrade(AccTrade accTrade); + public int updateAccTradeVo(AccTradeVo accTrade); + /** * 批量删除账户交易记录 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java index e48cdce..e73b86d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java @@ -1,8 +1,10 @@ package com.bonus.canteen.core.account.service.impl; import java.util.List; +import com.bonus.canteen.core.pay.dto.AccTradeVo; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccTradeMapper; @@ -58,6 +60,18 @@ public class AccTradeServiceImpl implements IAccTradeService { } } + @Override + public int insertAccTradeVo(AccTradeVo accTradeVo) { + accTradeVo.setCreateTime(DateUtils.getNowDate()); + try { + AccTrade accTrade = new AccTrade(); + BeanUtils.copyProperties(accTradeVo, accTrade); + return accTradeMapper.insertAccTrade(accTrade); + } catch (Exception e) { + throw new ServiceException("错误信息描述"); + } + } + /** * 修改账户交易记录 * @@ -74,6 +88,18 @@ public class AccTradeServiceImpl implements IAccTradeService { } } + @Override + public int updateAccTradeVo(AccTradeVo accTradeVo) { + accTradeVo.setUpdateTime(DateUtils.getNowDate()); + try { + AccTrade accTrade = new AccTrade(); + BeanUtils.copyProperties(accTradeVo, accTrade); + return accTradeMapper.updateAccTrade(accTrade); + } catch (Exception e) { + throw new ServiceException("错误信息描述"); + } + } + /** * 批量删除账户交易记录 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocCanteenServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocCanteenServiceImpl.java index 26bb3fe..b4146ce 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocCanteenServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocCanteenServiceImpl.java @@ -1,11 +1,14 @@ package com.bonus.canteen.core.alloc.service.impl; +import java.math.BigDecimal; import java.util.List; +import java.util.UUID; import com.bonus.canteen.core.alloc.domain.AllocCanteen; import com.bonus.canteen.core.alloc.mapper.AllocCanteenMapper; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.houqin.constant.GlobalConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.alloc.service.IAllocCanteenService; @@ -96,4 +99,11 @@ public class AllocCanteenServiceImpl implements IAllocCanteenService { public int deleteAllocCanteenByCanteenId(Long canteenId) { return allocCanteenMapper.deleteAllocCanteenByCanteenId(canteenId); } + + public static void main(String[] args) { + BigDecimal bigDecimal = new BigDecimal("123.45"); + long longValue = bigDecimal.multiply(new BigDecimal(100)).longValue(); + System.out.println(longValue); + System.out.println(GlobalConstants.TENANT_ID + "_" + UUID.randomUUID().toString().replaceAll("-","")); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java index eab0d03..1bb11c9 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java @@ -2,9 +2,14 @@ package com.bonus.canteen.core.pay.controller; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; +import com.bonus.canteen.core.account.constants.AccTradeStateEnum; +import com.bonus.canteen.core.account.service.IAccTradeService; +import com.bonus.canteen.core.pay.constants.PayStateEnum; +import com.bonus.canteen.core.pay.dto.AccTradeVo; import com.bonus.canteen.core.pay.util.AlipayConfig; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @@ -20,6 +25,10 @@ import java.util.Map; @RestController @RequestMapping("/alipay/notify") public class NotifyCotroller { + + @Autowired + IAccTradeService accTradeService; + @RequestMapping("getnotify") public void getNotify(HttpServletRequest request, HttpServletResponse response) throws AlipayApiException, IOException { Map params = new HashMap(); @@ -42,11 +51,11 @@ public class NotifyCotroller { PrintWriter out = response.getWriter(); if (singVerified) { //商户订单号 - String out_trade_no = request.getParameter("out_trade_no"); - //商户订单号 + String order_no = request.getParameter("out_trade_no"); + //金额 String total_amount = request.getParameter("total_amount"); //支付宝交易号 - String trade_no = request.getParameter("trade_no"); + String third_trade_no = request.getParameter("trade_no"); //交易状态 String trade_status = request.getParameter("trade_status"); if ("TRADE_FINISHED".equals(trade_status)) { @@ -54,11 +63,34 @@ public class NotifyCotroller { //如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序 //如果做过处理,不执行商户的业务程序 //注意: 退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态 TRADE_FINISHED + AccTradeVo updateTrade = new AccTradeVo(); + updateTrade.setOrderNo(order_no); + updateTrade.setThirdTradeNo(third_trade_no); + updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey()); + updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey()); + updateTrade.setFailReason(trade_status); + this.accTradeService.updateAccTradeVo(updateTrade); } else if ("TRADE_SUCCESS".equals(trade_status)) { //判断该笔订单是否已经做过处理 //如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序 //如果做过处理,不执行商户的业务程序 //注意: 付款完成后,支付宝系统发送该交易状态 TRADE_SUCCESS + AccTradeVo updateTrade = new AccTradeVo(); + updateTrade.setOrderNo(order_no); + updateTrade.setThirdTradeNo(third_trade_no); + updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey()); + updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey()); + updateTrade.setFailReason(trade_status); + this.accTradeService.updateAccTradeVo(updateTrade); + //TODO 增加用户的个人钱包 acc_wallet_info + } else { + AccTradeVo updateTrade = new AccTradeVo(); + updateTrade.setOrderNo(order_no); + updateTrade.setThirdTradeNo(third_trade_no); + updateTrade.setPayState(PayStateEnum.PAY_FAIL.getKey()); + updateTrade.setTradeState(AccTradeStateEnum.CLOSE.getKey()); + updateTrade.setFailReason(trade_status); + this.accTradeService.updateAccTradeVo(updateTrade); } out.println("success"); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java index af976cd..bb87eb2 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java @@ -4,16 +4,26 @@ import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.response.AlipayTradePagePayResponse; +import com.bonus.canteen.core.account.constants.AccTradeStateEnum; +import com.bonus.canteen.core.account.constants.AccTradeTypeEnum; +import com.bonus.canteen.core.account.service.IAccTradeService; +import com.bonus.canteen.core.pay.constants.PayStateEnum; import com.bonus.canteen.core.pay.util.AlipayConfig; -import com.bonus.canteen.core.pay.dto.UpOrder; +import com.bonus.canteen.core.pay.dto.AccTradeVo; +import com.bonus.common.houqin.constant.GlobalConstants; +import com.bonus.common.security.utils.SecurityUtils; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.math.BigDecimal; +import java.util.Date; +import java.util.UUID; @Slf4j @Api(tags = "支付接口") @@ -24,23 +34,37 @@ public class PayCotroller { AlipayClient alipayClient; @Resource AlipayTradePagePayRequest alipayRequest; + @Autowired + IAccTradeService accTradeService; @RequestMapping("pay") - public void pay(@RequestBody UpOrder order, HttpServletResponse response) throws AlipayApiException, IOException { - alipayRequest.setReturnUrl(AlipayConfig.return_url); - alipayRequest.setNotifyUrl(AlipayConfig.notify_url); + public void pay(@RequestBody AccTradeVo accTradeVo, HttpServletResponse response) throws AlipayApiException, IOException { + // 预装数据,存档 + accTradeVo.setUserId(SecurityUtils.getUserId()); + accTradeVo.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId()); + accTradeVo.setTradeType(AccTradeTypeEnum.CONSUME.getKey()); + accTradeVo.setOrderNo(GlobalConstants.TENANT_ID + "_" + UUID.randomUUID().toString().replaceAll("-","")); + accTradeVo.setOrderName(GlobalConstants.TENANT_ID + "_" + SecurityUtils.getUserId() + "_" + GlobalConstants.PERSONAL_RECHARGE); + accTradeVo.setTradeTime(new Date()); + accTradeVo.setAmount(accTradeVo.getPaymentAmount().multiply(new BigDecimal(100)).longValue()); + accTradeVo.setPayState(PayStateEnum.PAY_INPROCESS.getKey()); + accTradeVo.setTradeState(AccTradeStateEnum.CREATE.getKey()); + accTradeService.insertAccTradeVo(accTradeVo); + // 调用alipay alipayRequest.setBizContent( - "{\"out_trade_no\":\""+ order.getCode() +"\"," - + "\"total_amount\":\""+ order.getPaymentAmount().toString() +"\"," - + "\"subject\":\""+ order.getOrderName() +"\"," - + "\"body\":\""+ order.getProductDesc() +"\"," + "{\"out_trade_no\":\""+ accTradeVo.getOrderNo() +"\"," + + "\"total_amount\":\""+ accTradeVo.getPaymentAmount().toString() +"\"," + + "\"subject\":\""+ accTradeVo.getOrderName() +"\"," + + "\"body\":\""+ accTradeVo.getProductDesc() +"\"," + "\"timeout_express\":\"10m\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); + alipayRequest.setReturnUrl(AlipayConfig.return_url); + alipayRequest.setNotifyUrl(AlipayConfig.notify_url); AlipayTradePagePayResponse alipayResponse = alipayClient.pageExecute(alipayRequest); log.info("alipay body = " + alipayResponse.getBody()); log.info("alipay msg = " + alipayResponse.getMsg()); response.setContentType("text/html;charset=UTF-8"); - response.getWriter().println(alipayResponse.getBody()); //write(alipayResponse.getBody()); + response.getWriter().println(alipayResponse.getBody()); response.getWriter().flush(); } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java new file mode 100644 index 0000000..0607598 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java @@ -0,0 +1,35 @@ +package com.bonus.canteen.core.pay.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class AccTradeVo { + private Long userId; + private Long deptId; + private String orderNo;//商户订单号, 商户网站订单系统中唯一订单号,必填 + private String orderName;//订单名称, 必填 + private BigDecimal paymentAmount;//付款金额, 必填 + private String productDesc;//商品描述 + private Long amount; //金额(单位:分) + private Integer tradeType; + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date tradeTime; + private Integer tradeState; + private Integer payType; + private Integer payState; //是否付款 true - 已付 false-未付 + private String thirdTradeNo; //三方,支付宝交易号 + private String failReason; + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date createTime; + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date updateTime; +} \ No newline at end of file diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java deleted file mode 100644 index ef841c7..0000000 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.bonus.canteen.core.pay.dto; - -import lombok.Data; -import java.math.BigDecimal; - -@Data -public class UpOrder { - private String code;//商户订单号, 商户网站订单系统中唯一订单号,必填 - private String orderName;//订单名称, 必填 - private BigDecimal paymentAmount;//付款金额, 必填 - private String productDesc;//商品描述 - private String createBy;//创建人Code - private Long createTime;//创建时间(时间戳) - private Integer createByType;//创建人类型 1-专家 2-企业用户 - private Boolean status;//是否付款 true - 已付 false-未付 - private Long payTime;//订单支付时间-支付后才存在 (时间戳) -} From ee85ae028efba0d83585bfcbcfa959aca3db7e5d Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 15:33:27 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E6=9E=9A=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ountStatusEnum.java => AccStatusEnum.java} | 16 ++--- .../core/account/enums/AccStatusEnum.java | 69 ------------------- .../core/account/enums/AccWalletIdEnum.java | 24 ------- .../canteen/core/account/mq/AccMqSender.java | 4 +- .../service/impl/AccInfoServiceImpl.java | 12 +--- 5 files changed, 11 insertions(+), 114 deletions(-) rename bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/{AccountStatusEnum.java => AccStatusEnum.java} (53%) delete mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java delete mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccStatusEnum.java similarity index 53% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccStatusEnum.java index 8d87954..7b7d6e0 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccountStatusEnum.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccStatusEnum.java @@ -3,27 +3,27 @@ package com.bonus.canteen.core.account.constants; import java.util.*; import java.util.stream.Collectors; -public enum AccountStatusEnum { - NORMAL(1, "正常"), - DEACTIVATE(2, "停用"); +public enum AccStatusEnum { + NORMAL(0, "正常"), + DEACTIVATE(1, "停用"); private final Integer key; private final String desc; - private static final Map ENUM_MAP = Arrays.stream(values()) - .collect(Collectors.toMap(AccountStatusEnum::getKey, e -> e)); + private static final Map ENUM_MAP = Arrays.stream(values()) + .collect(Collectors.toMap(AccStatusEnum::getKey, e -> e)); - private AccountStatusEnum(Integer key, String desc) { + private AccStatusEnum(Integer key, String desc) { this.key = key; this.desc = desc; } public static String getDesc(Integer key) { - AccountStatusEnum enumValue = ENUM_MAP.get(key); + AccStatusEnum enumValue = ENUM_MAP.get(key); return enumValue != null ? enumValue.getDesc() : ""; } - public static AccountStatusEnum getEnum(Integer key) { + public static AccStatusEnum getEnum(Integer key) { return ENUM_MAP.get(key); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java deleted file mode 100644 index 0ae15fe..0000000 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccStatusEnum.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.bonus.canteen.core.account.enums; - -import cn.hutool.core.collection.ListUtil; - -import java.util.Arrays; -import java.util.List; - -public enum AccStatusEnum { - NORMAL(1, "正常"), - DEACTIVATE(2, "停用"), - CANCEL(3, "注销"), - OVERDUE(4, "过期"); - - private final Integer key; - private final String desc; - - private AccStatusEnum(Integer key, String desc) { - this.key = key; - this.desc = desc; - } - - public static String getDesc(Integer key) { - AccStatusEnum[] var1 = values(); - int var2 = var1.length; - - for(int var3 = 0; var3 < var2; ++var3) { - AccStatusEnum temp = var1[var3]; - if (temp.getKey().equals(key)) { - return temp.getDesc(); - } - } - - return ""; - } - - public static AccStatusEnum getEnum(Integer key) { - AccStatusEnum[] var1 = values(); - int var2 = var1.length; - - for(int var3 = 0; var3 < var2; ++var3) { - AccStatusEnum temp = var1[var3]; - if (temp.getKey().equals(key)) { - return temp; - } - } - - return null; - } - - public static List sendMqStatus() { - return Arrays.asList(DEACTIVATE.getKey(), OVERDUE.getKey()); - } - - public static List accStatusForAppWork() { - return ListUtil.toList(new Integer[]{NORMAL.getKey(), DEACTIVATE.getKey(), OVERDUE.getKey()}); - } - - public static boolean ifNotAllowRechargeRepeal(Integer key) { - return ListUtil.toList(new Integer[]{CANCEL.getKey()}).contains(key); - } - - public Integer getKey() { - return this.key; - } - - public String getDesc() { - return this.desc; - } -} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java deleted file mode 100644 index 3a089de..0000000 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/enums/AccWalletIdEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.bonus.canteen.core.account.enums; - -public enum AccWalletIdEnum { - WALLET(1, "个人钱包"), - SUBSIDY(2, "补贴钱包"); - //LUCK_MONEY(4, "红包"); - - private final Integer key; - private final String desc; - - private AccWalletIdEnum(Integer key, String desc) { - this.key = key; - this.desc = desc; - } - - public Integer getKey() { - return this.key; - } - - public String getDesc() { - return this.desc; - } - -} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java index ad06386..24ad2f5 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mq/AccMqSender.java @@ -1,6 +1,6 @@ package com.bonus.canteen.core.account.mq; -import com.bonus.canteen.core.account.constants.AccountStatusEnum; +import com.bonus.canteen.core.account.constants.AccStatusEnum; import com.bonus.canteen.core.account.domain.bo.AccStatusChange; import com.bonus.canteen.core.common.utils.TenantContextHolder; import com.bonus.common.core.constant.SecurityConstants; @@ -31,7 +31,7 @@ public class AccMqSender { return; } - if (!AccountStatusEnum.DEACTIVATE.getKey().equals(accStatus)) { + if (!AccStatusEnum.DEACTIVATE.getKey().equals(accStatus)) { log.warn("账户状态不在允许范围内,无法发送MQ。accStatus: {}", accStatus); return; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index fad1728..f5286db 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -1,12 +1,9 @@ package com.bonus.canteen.core.account.service.impl; -import java.math.BigDecimal; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.LocalTime; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import cn.hutool.core.collection.CollUtil; @@ -15,7 +12,7 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.bonus.canteen.core.account.constants.AccWalletIdEnum; -import com.bonus.canteen.core.account.constants.AccountStatusEnum; +import com.bonus.canteen.core.account.constants.AccStatusEnum; import com.bonus.canteen.core.account.domain.*; import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam; import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam; @@ -29,16 +26,12 @@ import com.bonus.canteen.core.account.service.IAccWalletInfoService; import java.util.ArrayList; import java.util.List; -import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.bonus.canteen.core.account.domain.AccInfoVo; import com.bonus.canteen.core.account.domain.AccWalletInfo; import com.bonus.canteen.core.account.domain.WalletBalanceVO; -import com.bonus.canteen.core.account.enums.AccStatusEnum; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; -import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.houqin.constant.LeCodeUseSceneEnum; import com.bonus.common.houqin.constant.SourceTypeEnum; import com.bonus.common.security.utils.SecurityUtils; @@ -46,7 +39,6 @@ import com.bonus.system.api.domain.SysUser; import com.bonus.common.houqin.utils.SM4EncryptUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -55,8 +47,6 @@ import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccInfoMapper; import com.bonus.canteen.core.account.service.IAccInfoService; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; From 435a0f55d155c11005f7794638024b09f2f8b60d Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 16:27:22 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/core/account/domain/AccTrade.java | 8 ++++---- .../dto => account/domain/vo}/AccTradeVo.java | 10 +++++----- .../core/account/mapper/AccTradeMapper.java | 3 ++- .../account/service/IAccTradeService.java | 4 ++-- .../service/impl/AccTradeServiceImpl.java | 16 +++++++-------- .../core/pay/controller/NotifyCotroller.java | 20 +++++++++---------- .../core/pay/controller/PayCotroller.java | 17 ++++++++++------ .../mapper/account/AccTradeMapper.xml | 18 ++++++++++++----- 8 files changed, 54 insertions(+), 42 deletions(-) rename bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/{pay/dto => account/domain/vo}/AccTradeVo.java (81%) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccTrade.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccTrade.java index 722127b..3258736 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccTrade.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccTrade.java @@ -100,10 +100,10 @@ public class AccTrade extends BaseEntity { @ApiModelProperty(value = "批量操作批次号") private String batchNum; - /** 关联小牛订单号 */ - @Excel(name = "关联小牛订单号") - @ApiModelProperty(value = "关联小牛订单号") - private Long leOrdNo; + /** 商户订单号 */ + @Excel(name = "商户订单号") + @ApiModelProperty(value = "商户订单号") + private String orderNo; /** 关联原记录交易id */ @Excel(name = "关联原记录交易id") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccTradeVo.java similarity index 81% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccTradeVo.java index 0607598..26ca81a 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/AccTradeVo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccTradeVo.java @@ -1,4 +1,4 @@ -package com.bonus.canteen.core.pay.dto; +package com.bonus.canteen.core.account.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -14,14 +14,14 @@ public class AccTradeVo { private BigDecimal paymentAmount;//付款金额, 必填 private String productDesc;//商品描述 private Long amount; //金额(单位:分) - private Integer tradeType; + private Long tradeType; @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" ) private Date tradeTime; - private Integer tradeState; - private Integer payType; - private Integer payState; //是否付款 true - 已付 false-未付 + private Long tradeState; + private Long payType; + private Long payState; //是否付款 true - 已付 false-未付 private String thirdTradeNo; //三方,支付宝交易号 private String failReason; @JsonFormat( diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java index d70a764..73c8670 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.mapper; import java.util.List; import com.bonus.canteen.core.account.domain.AccTrade; +import com.bonus.canteen.core.account.domain.vo.AccTradeVo; /** * 账户交易记录Mapper接口 @@ -44,7 +45,7 @@ public interface AccTradeMapper { */ public int updateAccTrade(AccTrade accTrade); -// public int updateAccTradeVo(AccTradeVo accTrade); + public int updateAccTradeVoByOrderNo(AccTradeVo accTradeVo); /** * 删除账户交易记录 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java index fa2e473..b323d42 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java @@ -2,7 +2,7 @@ package com.bonus.canteen.core.account.service; import java.util.List; import com.bonus.canteen.core.account.domain.AccTrade; -import com.bonus.canteen.core.pay.dto.AccTradeVo; +import com.bonus.canteen.core.account.domain.vo.AccTradeVo; /** * 账户交易记录Service接口 @@ -45,7 +45,7 @@ public interface IAccTradeService { */ public int updateAccTrade(AccTrade accTrade); - public int updateAccTradeVo(AccTradeVo accTrade); + public int updateAccTradeVoByOrderNo(AccTradeVo accTrade); /** * 批量删除账户交易记录 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java index e73b86d..f57d809 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java @@ -1,7 +1,7 @@ package com.bonus.canteen.core.account.service.impl; import java.util.List; -import com.bonus.canteen.core.pay.dto.AccTradeVo; +import com.bonus.canteen.core.account.domain.vo.AccTradeVo; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import org.springframework.beans.BeanUtils; @@ -56,7 +56,7 @@ public class AccTradeServiceImpl implements IAccTradeService { try { return accTradeMapper.insertAccTrade(accTrade); } catch (Exception e) { - throw new ServiceException("错误信息描述"); + throw new ServiceException("错误信息描述" + e.getMessage()); } } @@ -68,7 +68,7 @@ public class AccTradeServiceImpl implements IAccTradeService { BeanUtils.copyProperties(accTradeVo, accTrade); return accTradeMapper.insertAccTrade(accTrade); } catch (Exception e) { - throw new ServiceException("错误信息描述"); + throw new ServiceException("错误信息描述" + e.getMessage()); } } @@ -84,19 +84,17 @@ public class AccTradeServiceImpl implements IAccTradeService { try { return accTradeMapper.updateAccTrade(accTrade); } catch (Exception e) { - throw new ServiceException("错误信息描述"); + throw new ServiceException("错误信息描述" + e.getMessage()); } } @Override - public int updateAccTradeVo(AccTradeVo accTradeVo) { + public int updateAccTradeVoByOrderNo(AccTradeVo accTradeVo) { accTradeVo.setUpdateTime(DateUtils.getNowDate()); try { - AccTrade accTrade = new AccTrade(); - BeanUtils.copyProperties(accTradeVo, accTrade); - return accTradeMapper.updateAccTrade(accTrade); + return accTradeMapper.updateAccTradeVoByOrderNo(accTradeVo); } catch (Exception e) { - throw new ServiceException("错误信息描述"); + throw new ServiceException("错误信息描述" + e.getMessage()); } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java index 1bb11c9..aa2d0dd 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java @@ -5,7 +5,7 @@ import com.alipay.api.internal.util.AlipaySignature; import com.bonus.canteen.core.account.constants.AccTradeStateEnum; import com.bonus.canteen.core.account.service.IAccTradeService; import com.bonus.canteen.core.pay.constants.PayStateEnum; -import com.bonus.canteen.core.pay.dto.AccTradeVo; +import com.bonus.canteen.core.account.domain.vo.AccTradeVo; import com.bonus.canteen.core.pay.util.AlipayConfig; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; @@ -66,10 +66,10 @@ public class NotifyCotroller { AccTradeVo updateTrade = new AccTradeVo(); updateTrade.setOrderNo(order_no); updateTrade.setThirdTradeNo(third_trade_no); - updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey()); - updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey()); + updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey().longValue()); + updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue()); updateTrade.setFailReason(trade_status); - this.accTradeService.updateAccTradeVo(updateTrade); + this.accTradeService.updateAccTradeVoByOrderNo(updateTrade); } else if ("TRADE_SUCCESS".equals(trade_status)) { //判断该笔订单是否已经做过处理 //如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序 @@ -78,19 +78,19 @@ public class NotifyCotroller { AccTradeVo updateTrade = new AccTradeVo(); updateTrade.setOrderNo(order_no); updateTrade.setThirdTradeNo(third_trade_no); - updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey()); - updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey()); + updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey().longValue()); + updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue()); updateTrade.setFailReason(trade_status); - this.accTradeService.updateAccTradeVo(updateTrade); + this.accTradeService.updateAccTradeVoByOrderNo(updateTrade); //TODO 增加用户的个人钱包 acc_wallet_info } else { AccTradeVo updateTrade = new AccTradeVo(); updateTrade.setOrderNo(order_no); updateTrade.setThirdTradeNo(third_trade_no); - updateTrade.setPayState(PayStateEnum.PAY_FAIL.getKey()); - updateTrade.setTradeState(AccTradeStateEnum.CLOSE.getKey()); + updateTrade.setPayState(PayStateEnum.PAY_FAIL.getKey().longValue()); + updateTrade.setTradeState(AccTradeStateEnum.CLOSE.getKey().longValue()); updateTrade.setFailReason(trade_status); - this.accTradeService.updateAccTradeVo(updateTrade); + this.accTradeService.updateAccTradeVoByOrderNo(updateTrade); } out.println("success"); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java index bb87eb2..e6b5371 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java @@ -8,8 +8,9 @@ import com.bonus.canteen.core.account.constants.AccTradeStateEnum; import com.bonus.canteen.core.account.constants.AccTradeTypeEnum; import com.bonus.canteen.core.account.service.IAccTradeService; import com.bonus.canteen.core.pay.constants.PayStateEnum; +import com.bonus.canteen.core.pay.constants.PayTypeEnum; import com.bonus.canteen.core.pay.util.AlipayConfig; -import com.bonus.canteen.core.pay.dto.AccTradeVo; +import com.bonus.canteen.core.account.domain.vo.AccTradeVo; import com.bonus.common.houqin.constant.GlobalConstants; import com.bonus.common.security.utils.SecurityUtils; import io.swagger.annotations.Api; @@ -22,6 +23,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; @@ -42,13 +44,16 @@ public class PayCotroller { // 预装数据,存档 accTradeVo.setUserId(SecurityUtils.getUserId()); accTradeVo.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId()); - accTradeVo.setTradeType(AccTradeTypeEnum.CONSUME.getKey()); - accTradeVo.setOrderNo(GlobalConstants.TENANT_ID + "_" + UUID.randomUUID().toString().replaceAll("-","")); - accTradeVo.setOrderName(GlobalConstants.TENANT_ID + "_" + SecurityUtils.getUserId() + "_" + GlobalConstants.PERSONAL_RECHARGE); + accTradeVo.setTradeType(AccTradeTypeEnum.CONSUME.getKey().longValue()); + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + accTradeVo.setOrderNo(GlobalConstants.TENANT_ID + "_" + UUID.randomUUID().toString().replaceAll("-","") + "_" + sdf.format(date)); + accTradeVo.setOrderName(GlobalConstants.TENANT_ID + "_" + SecurityUtils.getUserId() + "_" + GlobalConstants.PERSONAL_RECHARGE + "_" + sdf.format(date)); accTradeVo.setTradeTime(new Date()); accTradeVo.setAmount(accTradeVo.getPaymentAmount().multiply(new BigDecimal(100)).longValue()); - accTradeVo.setPayState(PayStateEnum.PAY_INPROCESS.getKey()); - accTradeVo.setTradeState(AccTradeStateEnum.CREATE.getKey()); + accTradeVo.setPayType(PayTypeEnum.MEAL_CARD.getKey().longValue()); + accTradeVo.setPayState(PayStateEnum.PAY_INPROCESS.getKey().longValue()); + accTradeVo.setTradeState(AccTradeStateEnum.CREATE.getKey().longValue()); accTradeService.insertAccTradeVo(accTradeVo); // 调用alipay alipayRequest.setBizContent( diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml index 8c91fa9..fc12f24 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml @@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and third_trade_no = #{thirdTradeNo} and machine_sn = #{machineSn} and batch_num = #{batchNum} - and le_ord_no = #{leOrdNo} + and order_no = #{orderNo} and origin_trade_id = #{originTradeId} and sub_time_rule_id = #{subTimeRuleId} and manage_cost = #{manageCost} @@ -101,7 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" third_trade_no, machine_sn, batch_num, - le_ord_no, + order_no, origin_trade_id, sub_time_rule_id, manage_cost, @@ -136,7 +136,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{thirdTradeNo}, #{machineSn}, #{batchNum}, - #{leOrdNo}, + #{orderNo}, #{originTradeId}, #{subTimeRuleId}, #{manageCost}, @@ -174,7 +174,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" third_trade_no = #{thirdTradeNo}, machine_sn = #{machineSn}, batch_num = #{batchNum}, - le_ord_no = #{leOrdNo}, + order_no = #{orderNo}, origin_trade_id = #{originTradeId}, sub_time_rule_id = #{subTimeRuleId}, manage_cost = #{manageCost}, @@ -195,6 +195,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where trade_id = #{tradeId} + + update acc_trade + set + third_trade_no = #{thirdTradeNo},pay_state = #{payState}, + trade_state = #{tradeState},fail_reason = #{failReason},update_time = #{updateTime} + where order_no = #{orderNo} + + delete from acc_trade where trade_id = #{tradeId} From 3c27920abd9820e9c403a6980d9dde9fd83c2294 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 17:02:35 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/core/alloc/controller/AllocAreaController.java | 4 +++- .../canteen/core/alloc/controller/AllocCanteenController.java | 4 +++- .../canteen/core/alloc/controller/AllocStallController.java | 4 +++- .../java/com/bonus/canteen/core/alloc/domain/AllocArea.java | 3 +++ .../com/bonus/canteen/core/alloc/domain/AllocCanteen.java | 3 +++ .../java/com/bonus/canteen/core/alloc/domain/AllocStall.java | 3 +++ 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java index 2b5cba4..f3b0ea5 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocAreaController.java @@ -58,7 +58,9 @@ public class AllocAreaController extends BaseController { //@RequiresPermissions("alloc:area:list") @GetMapping("/list") public TableDataInfo list(AllocArea allocArea) { - startPage(); + if (allocArea.isPagenation()) { + startPage(); + } List list = allocAreaService.selectAllocAreaList(allocArea); return getDataTable(list); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocCanteenController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocCanteenController.java index 37c692f..1f5f064 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocCanteenController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocCanteenController.java @@ -40,7 +40,9 @@ public class AllocCanteenController extends BaseController { //@RequiresPermissions("alloc:canteen:list") @GetMapping("/list") public TableDataInfo list(AllocCanteen allocCanteen) { - startPage(); + if (allocCanteen.isPagenation()) { + startPage(); + } List list = allocCanteenService.selectAllocCanteenList(allocCanteen); return getDataTable(list); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocStallController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocStallController.java index 4fd8cab..ffd4be9 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocStallController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/controller/AllocStallController.java @@ -40,7 +40,9 @@ public class AllocStallController extends BaseController { //@RequiresPermissions("alloc:stall:list") @GetMapping("/list") public TableDataInfo list(AllocStall allocStall) { - startPage(); + if (allocStall.isPagenation()) { + startPage(); + } List list = allocStallService.selectAllocStallList(allocStall); return getDataTable(list); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java index b7b6b2e..47b6848 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocArea.java @@ -22,6 +22,9 @@ import java.util.List; public class AllocArea extends BaseEntity { private static final long serialVersionUID = 1L; + /** 是否分页 */ + private boolean pagenation; + /** 主键id */ private Long areaId; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java index 0cd4593..ae5d389 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocCanteen.java @@ -21,6 +21,9 @@ import com.bonus.common.core.web.domain.BaseEntity; public class AllocCanteen extends BaseEntity { private static final long serialVersionUID = 1L; + /** 是否分页 */ + private boolean pagenation; + /** 主键id */ private Long canteenId; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java index 07d4208..6c02547 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/AllocStall.java @@ -21,6 +21,9 @@ import com.bonus.common.core.web.domain.BaseEntity; public class AllocStall extends BaseEntity { private static final long serialVersionUID = 1L; + /** 是否分页 */ + private boolean pagenation; + /** 档口id */ private Long stallId; From 492db3b890871c5a2f61a6c751b6748d7efef725 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Tue, 8 Apr 2025 17:10:45 +0800 Subject: [PATCH 19/19] tree --- .../bonus/canteen/core/alloc/service/IAllocAreaService.java | 2 +- .../core/alloc/service/impl/AllocAreaServiceImpl.java | 6 +++--- .../canteen/core/{alloc => common}/domain/TreeSelect.java | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) rename bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/{alloc => common}/domain/TreeSelect.java (94%) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/IAllocAreaService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/IAllocAreaService.java index a66a17c..2e60d76 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/IAllocAreaService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/IAllocAreaService.java @@ -2,7 +2,7 @@ package com.bonus.canteen.core.alloc.service; import java.util.List; import com.bonus.canteen.core.alloc.domain.AllocArea; -import com.bonus.canteen.core.alloc.domain.TreeSelect; +import com.bonus.canteen.core.common.domain.TreeSelect; /** * 区域Service接口 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocAreaServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocAreaServiceImpl.java index ef993c2..d849190 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocAreaServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/service/impl/AllocAreaServiceImpl.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; -import com.bonus.canteen.core.alloc.domain.TreeSelect; +import com.bonus.canteen.core.common.domain.TreeSelect; import com.bonus.canteen.core.alloc.mapper.AllocAreaMapper; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; @@ -110,8 +110,8 @@ public class AllocAreaServiceImpl implements IAllocAreaService { @Override public List buildAreaTreeSelect(List areas) { - List deptTrees = buildAreaTree(areas); - return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + List areaTrees = buildAreaTree(areas); + return areaTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } @Override diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/TreeSelect.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/domain/TreeSelect.java similarity index 94% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/TreeSelect.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/domain/TreeSelect.java index f725937..e6ce115 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/alloc/domain/TreeSelect.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/common/domain/TreeSelect.java @@ -1,5 +1,6 @@ -package com.bonus.canteen.core.alloc.domain; +package com.bonus.canteen.core.common.domain; +import com.bonus.canteen.core.alloc.domain.AllocArea; import com.fasterxml.jackson.annotation.JsonInclude; import java.io.Serializable;