| | |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.apache.poi.ss.usermodel.WorkbookFactory; |
| | | import org.springframework.dao.DuplicateKeyException; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | |
| | | private final BenefitMerchantMapper merchantMapper; |
| | | private final TicketPackageMerchantMapper packageMerchantMapper; |
| | | private final TicketPackageLevelRuleMapper levelRuleMapper; |
| | | private final JdbcTemplate jdbcTemplate; |
| | | |
| | | public TicketPackageAdminService( |
| | | TicketPackageMapper packageMapper, |
| | |
| | | TicketPackageClaimMapper claimMapper, |
| | | BenefitMerchantMapper merchantMapper, |
| | | TicketPackageMerchantMapper packageMerchantMapper, |
| | | TicketPackageLevelRuleMapper levelRuleMapper |
| | | TicketPackageLevelRuleMapper levelRuleMapper, |
| | | JdbcTemplate jdbcTemplate |
| | | ) { |
| | | this.packageMapper = packageMapper; |
| | | this.codeMapper = codeMapper; |
| | |
| | | this.merchantMapper = merchantMapper; |
| | | this.packageMerchantMapper = packageMerchantMapper; |
| | | this.levelRuleMapper = levelRuleMapper; |
| | | this.jdbcTemplate = jdbcTemplate; |
| | | } |
| | | |
| | | /** |
| | | * 票包表单的「适用商家」下拉选项:只回启用的观影服务商家(id + 名称)。 |
| | | * |
| | | * <p>单独开这个只读接口,是为了让「电影票管理」这个权限自己够用——之前页面复用 |
| | | * {@code /api/admin/business/merchants},票包运营账号没有「商家查询」权限就整页报错。 |
| | | */ |
| | | @Transactional(readOnly = true) |
| | | public List<Map<String, Object>> merchantOptions(String keyword) { |
| | | StringBuilder sql = new StringBuilder(""" |
| | | select id, merchant_name, merchant_type |
| | | from merchant |
| | | where deleted = 0 and status = 1 and merchant_type_code = 'cinema' |
| | | """); |
| | | List<Object> arguments = new ArrayList<>(); |
| | | if (keyword != null && !keyword.isBlank()) { |
| | | sql.append(" and merchant_name like ?"); |
| | | arguments.add("%" + keyword.trim() + "%"); |
| | | } |
| | | sql.append(" order by sort_no desc, id asc"); |
| | | return jdbcTemplate.queryForList(sql.toString(), arguments.toArray()).stream().map(row -> { |
| | | Map<String, Object> option = new LinkedHashMap<>(); |
| | | option.put("id", row.get("id")); |
| | | option.put("merchantName", row.get("merchant_name")); |
| | | option.put("merchantType", row.get("merchant_type")); |
| | | return option; |
| | | }).toList(); |
| | | } |
| | | |
| | | @Transactional(readOnly = true) |