diff --git a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java index 119e366..45b11c7 100644 --- a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java +++ b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java @@ -347,10 +347,8 @@ public class MysqlServiceImpl implements MysqlService { Map dataMap = (Map) responseBody.get("data"); if (dataMap != null) { name = (String) dataMap.get("name"); - Object countryObj = dataMap.get("country"); - if (countryObj instanceof List) { - country = (String) countryObj; - } + country = getCountryWithDefault(dataMap, "未知"); + logger.info("获取用户信息成功: name={}, country={}", name, country); } } @@ -424,5 +422,19 @@ public class MysqlServiceImpl implements MysqlService { } } } + private String getCountryWithDefault(Map dataMap, String defaultValue) { + Object countryObj = dataMap.get("treelist"); + + if (countryObj instanceof String) { + String countryStr = ((String) countryObj).trim(); + if (countryStr.isEmpty()) { + return defaultValue; + } + String[] parts = countryStr.split("-"); + return parts.length >= 3 ? parts[2] : defaultValue; + } + + return defaultValue; + } } \ No newline at end of file diff --git a/src/main/java/com/example/demo/Util/BaseDES.java b/src/main/java/com/example/demo/Util/BaseDES.java index 933305a..5b013bf 100644 --- a/src/main/java/com/example/demo/Util/BaseDES.java +++ b/src/main/java/com/example/demo/Util/BaseDES.java @@ -91,7 +91,7 @@ public class BaseDES { public static void main(String args[]) { try { BaseDES d = new BaseDES(); - String encryptedText = d.encrypt("90048144"); + String encryptedText = d.encrypt("90048169"); System.out.println("加密结果:" + encryptedText); System.out.println("加密字符串:90005179》"+d.encrypt("90005179")); System.out.println("解密字符串:6aaef5277c050f7ae383f816651098ff》"+d.decrypt("6aaef5277c050f7ae383f816651098ff")); diff --git a/src/main/java/com/example/demo/controller/cash/CashRefundController.java b/src/main/java/com/example/demo/controller/cash/CashRefundController.java index 6c379e2..7eb5a37 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -88,36 +88,68 @@ public class CashRefundController { } @PostMapping("/add") - public Result add(@RequestBody CashRecordDone cashRecordDone) { + public Result add(@RequestBody CashRecordDone cashRecordDone) throws Exception { try { return Result.success(refundService.add(cashRecordDone)); } catch (Exception e) { return Result.error(e.getMessage()); } } + @PostMapping("/selecta") + public Result selecta(@RequestBody Page page) { + +// 校验分页参数 + if (ObjectUtils.isEmpty(page.getPageNum())) { + return Result.error("页码数为空!"); + } + if (ObjectUtils.isEmpty(page.getPageSize())) { + return Result.error("页大小为空!"); + } +// 获取传入的市场列表 + List requestedMarkets = page.getCashRecordDone() != null ? page.getCashRecordDone().getMarkets() : null; + + return Result.success(refundService.select(page.getPageNum(), page.getPageSize(), page.getCashRecordDone())); + } @PostMapping("/update") - public Result update(@RequestBody CashRecordDone cashRecordDone) { + public Result update(@RequestBody CashRecordDone cashRecordDone)throws Exception { + if (cashRecordDone.getStatus() == null) { + return Result.error("状态为空"); + } if (cashRecordDone.getStatus() == 10) { return Result.success(refundService.withdraw(cashRecordDone)); } else if (cashRecordDone.getStatus() == 11) { - return Result.success(refundService.update(cashRecordDone)); + try { + return Result.success(refundService.update(cashRecordDone)); + } catch (Exception e) { + return Result.error(e.getMessage()); + } } else return Result.error("该订单状态无法支持此操作"); } @PostMapping("/review") - public Result review(@RequestBody CashRecordDone cashRecordDone) { - return Result.success(refundService.review(cashRecordDone)); + public Result review(@RequestBody CashRecordDone cashRecordDone){ + try { + return Result.success(refundService.review(cashRecordDone)); + } catch (Exception e) { + return Result.error(e.getMessage()); + } } @PostMapping("/finalReview") public Result finalReview(@RequestBody CashRecordDone cashRecordDone) { return Result.success(refundService.finalreview(cashRecordDone)); } @PostMapping("/executor") - public Result executor(@RequestBody CashRecordDone cashRecordDone) { - return Result.success(refundService.executor(cashRecordDone)); + public Result executor(@RequestBody CashRecordDone cashRecordDone) throws Exception { + try { + return Result.success(refundService.executor(cashRecordDone)); + } + catch (Exception e) { + return Result.error(e.getMessage()); + } + } } diff --git a/src/main/java/com/example/demo/domain/entity/CashRecord.java b/src/main/java/com/example/demo/domain/entity/CashRecord.java index 8e1c351..958f5bb 100644 --- a/src/main/java/com/example/demo/domain/entity/CashRecord.java +++ b/src/main/java/com/example/demo/domain/entity/CashRecord.java @@ -56,6 +56,7 @@ public class CashRecord implements Serializable { // 状态 & 操作人 private Integer status; // 订单状态 private Integer submitterId; // 提交人 id + private String submitterMarket; //提交人地区 private String voucher; // 转账凭证 private String remark; // 备注 private String rejectReason; // 驳回理由 diff --git a/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java b/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java index 451bba9..bfdccd3 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java +++ b/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java @@ -54,6 +54,7 @@ public class CashCollection implements Serializable { //状态 操作人 private Integer status; // 订单状态 private Integer submitterId; // 提交人 id + private String submitterMarket; //提交人地区 private String submitterName; // 提交人 姓名 private String voucher; // 转账凭证 private String remark; // 备注 diff --git a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java index 1faa9fc..b394a4d 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java +++ b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java @@ -35,6 +35,7 @@ public class CashRecordDone { private String bankCode; /** 商品名称 */ private String goodsName; + private List goodsNames; /** 币种 */ private String paymentCurrency; /** 金额 */ @@ -110,6 +111,8 @@ public class CashRecordDone { private String areaFinance; private String areaCharge; private String headFinance; + private String sortField; + private String sortOrder; } \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java index 06697e6..7c598fb 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -48,6 +48,7 @@ public interface CashCollectionMapper { List getActivityList(); //查找未同步的订单 ListgetUnSync(@Param("size")int size); - //同步g_order订单到cash_record表 - // int syncToCashRecord(CashRecord record); + //给同步过去的gOrder设置同步状态 + int markSynced(@Param("orderId") Integer orderId); + } diff --git a/src/main/java/com/example/demo/mapper/coin/MarketMapper.java b/src/main/java/com/example/demo/mapper/coin/MarketMapper.java index 4629817..9102db8 100644 --- a/src/main/java/com/example/demo/mapper/coin/MarketMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/MarketMapper.java @@ -12,6 +12,6 @@ public interface MarketMapper { //获取单个市场id String getMarketId(String market); - Market getMarketIdDao(String market); + Market getMarketIdDao(String country); Market getMarketIdBytype(String market); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/cash/RefundService.java b/src/main/java/com/example/demo/service/cash/RefundService.java index a0dd385..3612678 100644 --- a/src/main/java/com/example/demo/service/cash/RefundService.java +++ b/src/main/java/com/example/demo/service/cash/RefundService.java @@ -17,13 +17,13 @@ public interface RefundService { //添加 int add(CashRecordDone cashRecordDone) throws Exception; //修改 - int update(CashRecordDone cashRecordDone); + int update(CashRecordDone cashRecordDone) throws Exception; // int withdraw(CashRecordDone cashRecordDone); //审核 - int review(CashRecordDone cashRecordDone); + int review(CashRecordDone cashRecordDone) throws Exception; // 执行 - int executor(CashRecordDone cashRecordDone); + int executor(CashRecordDone cashRecordDone) throws Exception; //修改原数据状态 int updateStatus(CashRecordDone cashRecordDone); diff --git a/src/main/java/com/example/demo/service/coin/MarketService.java b/src/main/java/com/example/demo/service/coin/MarketService.java index db7a9ca..21d03a0 100644 --- a/src/main/java/com/example/demo/service/coin/MarketService.java +++ b/src/main/java/com/example/demo/service/coin/MarketService.java @@ -18,5 +18,5 @@ public interface MarketService { //获取市场id List getMarketIds(List list); //dao获取市场id - String getMarketIdsDao(String market); + String getMarketIdsDao(String country); } diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java index e1cdb37..d6a602d 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -10,11 +10,15 @@ import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.service.cash.CashCollectionService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.List; import java.util.UUID; @@ -27,6 +31,7 @@ import java.util.UUID; * @Version 1.0 **/ @Service +@Slf4j public class CashCollectionServiceImpl implements CashCollectionService { @Autowired @@ -97,6 +102,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { cashRecord.setRemark(cashCollection.getRemark()); //备注 cashRecord.setStatus(0); //订单状态:付款线下财务待审核 cashRecord.setSubmitterId(cashCollection.getSubmitterId()); //提交人ID + cashRecord.setSubmitterMarket(cashCollection.getSubmitterMarket()); cashRecord.setOrderType(1); //订单类型:1-收款 cashRecord.setMarket(cashCollection.getMarket()); //地区,根据jwcode插入 @@ -180,25 +186,34 @@ public class CashCollectionServiceImpl implements CashCollectionService { if (markets.contains("9") || markets.contains("9999")){ markets=null; } - cashCollection.setReceivedMarket(marketMapper.getMarketId(cashCollection.getReceivedMarket())); + // cashCollection.setReceivedMarket(marketMapper.getMarketId(cashCollection.getReceivedMarket())); if (cashCollection.getCashRoleId()==2) { //角色是总部时,传1346,sql处理为(1,3,4,6)筛选, cashCollection.setStatus(1346); cashCollection.setSubmitterId(null); cashCollection.setReceivedMarket(null); - }if (cashCollection.getCashRoleId()==1){ - //角色是地方财务,提交人置空不设筛选条件,仅按地区筛选,查看 - - if(cashCollection.getStatus()==null){ - cashCollection.setStatus(123460); + cashCollection.setSubmitterMarket(null); } + if (cashCollection.getCashRoleId()==1){ + //角色是地方财务,提交人置空不设筛选条件,仅按收款地区、提交人地区筛选() + + if(cashCollection.getStatus()==null){ + cashCollection.setStatus(123460);} + //状态为待审核和已驳回时按照提交人地区筛选 + if (cashCollection.getStatus()==0||cashCollection.getStatus()==2){ + cashCollection.setReceivedMarket(null);} + //状态为已通过和Link通过时,按收款地区筛选 + if (cashCollection.getStatus()==13){ + cashCollection.setSubmitterMarket(null);} cashCollection.setSubmitterId(null); - }if (cashCollection.getCashRoleId()==0){ + //状态为46,已通过和已退款,满足收款地区或提交人地区即可, + + } + if (cashCollection.getCashRoleId()==0){ //角色是地方财务,提交人置空不设筛选条件---仅当角色是0 地方客服时,按提交人筛选 if(cashCollection.getStatus()==null){ - cashCollection.setStatus(1234560); - } + cashCollection.setStatus(1234560);} cashCollection.setSubmitterId(cashCollection.getSubmitterId()); cashCollection.setReceivedMarket(null); } @@ -245,35 +260,51 @@ public class CashCollectionServiceImpl implements CashCollectionService { cashRecord.setJwcode(gOrder.getJwcode()); cashRecord.setName(cashCollectionMapper.getNameByJwcode(gOrder.getJwcode())); cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(gOrder.getJwcode())); - cashRecord.setActivity("Link充值金币"); + cashRecord.setActivity("Link日常充值"); cashRecord.setOrderCode(gOrder.getOrderNo()); if (gOrder != null) { switch (gOrder.getPayStyle()) { case 3: cashRecord.setPayType("IOS内购"); cashRecord.setBankCode(gOrder.getIosTransactionId()); - break; - case 4: - cashRecord.setPayType("Paypal"); - cashRecord.setBankCode(gOrder.getPaypalOrderId()); + cashRecord.setReceivedMarket("3"); break; case 5: cashRecord.setPayType("Stripe-链接收款"); + cashRecord.setReceivedMarket("13"); break; case 6: cashRecord.setPayType("PaymentAsia-链接收款"); + cashRecord.setReceivedMarket("13"); break; case 7: cashRecord.setPayType("Ipay88-链接收款"); + cashRecord.setReceivedMarket("5"); break; case 9: cashRecord.setPayType("FistData"); + cashRecord.setReceivedMarket("4"); break; default: break; } } cashRecord.setGoodsName("Link充值金币"); + cashRecord.setGoodNum(0); + cashRecord.setPermanentGold(gOrder.getCount()); + cashRecord.setFreeGold(0); + cashRecord.setPaymentCurrency(""); + cashRecord.setPaymentAmount(BigDecimal.valueOf(0)); + cashRecord.setPayTime(LocalDateTime.ofEpochSecond(gOrder.getSuccessTime(), 0, ZoneOffset.UTC)); + cashRecord.setStatus(3); + cashRecord.setSubmitterId(99999); + cashRecord.setRemark("Link充值金币"); + //存入现金库 + cashCollectionMapper.add(cashRecord); + cashCollectionMapper.markSynced(gOrder.getId()); + }log.info("同步完成一批,数量 {}", gOrders.size()); + if (gOrders.size() < 100) { + break; // 最后一批 } - }return "同步成功"; + }return "同步完毕"; }} diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index e3a871f..11bcb5d 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -6,6 +6,7 @@ import com.example.demo.domain.vo.cash.CashRecordDone; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.cash.CashRefundMapper; import com.example.demo.mapper.coin.AuditMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.RefundMapper; import com.example.demo.service.cash.RefundService; import com.github.pagehelper.PageHelper; @@ -37,6 +38,8 @@ public class CashRefundServiceImpl implements RefundService { private RefundMapper refundMapper; @Autowired private AuditMapper auditMapper; + @Autowired + private MarketMapper marketMapper; @Override public PageInfo select(Integer pageNum, Integer pageSize, CashRecordDone cashRecordDone) { PageHelper.startPage(pageNum, pageSize); @@ -75,7 +78,9 @@ public class CashRefundServiceImpl implements RefundService { //生成订单号后半部分 String orderNumber = cashRecordDone.getOrderCode(); //构建订单信息 - cashRecordDone.setOrderCode("TK_" + orderNumber); //订单号 + cashRecordDone.setOrderCode("TK" + orderNumber); //订单号 + cashRecordDone.setMarket(marketMapper.getMarketId(cashRecordDone.getMarket())); + cashRecordDone.setReceivedMarket(marketMapper.getMarketId(cashRecordDone.getReceivedMarket())); cashRefundMapper.insert(cashRecordDone); CashRecordDone cashRecordDone1 = new CashRecordDone(); cashRecordDone1.setId(cashRecordDone.getId()); @@ -86,7 +91,7 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int update(CashRecordDone cashRecordDone) { + public int update(CashRecordDone cashRecordDone) throws Exception { if (cashRecordDone.getJwcode()== null) { throw new RuntimeException("未输入精网号"); } @@ -112,8 +117,11 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int review(CashRecordDone cashRecordDone) { + public int review(CashRecordDone cashRecordDone) throws Exception { if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){ + if(cashRecordDone.getOrderCode()== null){ + throw new RuntimeException("未输入订单号"); + } CashRecordDone cashRecordDone1 = new CashRecordDone(); cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2)); cashRecordDone1.setStatus(4); @@ -126,7 +134,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); } @Override - public int executor(CashRecordDone cashRecordDone) { + public int executor(CashRecordDone cashRecordDone) throws Exception { if(cashRecordDone.getRefundVoucher()== null){ throw new RuntimeException("未输入退款凭证"); } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java index b8211f6..c62b225 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java @@ -47,16 +47,16 @@ public class MarketServiceImpl implements MarketService { } @Override - public String getMarketIdsDao(String market) { + public String getMarketIdsDao(String country) { // 1. 参数验证 - if (market == null || market.trim().isEmpty()) { + if (country == null || country.trim().isEmpty()) { return "24030"; } try { // 2. 查询市场信息 - Market marketObj = marketMapper.getMarketIdDao(market.trim()); + Market marketObj = marketMapper.getMarketIdDao(country); // 3. 空值检查 if (marketObj == null) { diff --git a/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java index dde9d1c..e702506 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java @@ -63,7 +63,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { allMarkets.remove("总部"); // 固定顺序 List fixed = Arrays.asList( - "新加坡", "马来西亚", "香港", "加拿大", "泰国", "越南HCM", "韩国", "未知" + "新加坡", "马来西亚", "香港", "加拿大", "泰国", "越南HCM", "韩国", "非网" ); // 先放固定顺序(存在的才放) diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 23eaeef..2ec3883 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -46,6 +46,7 @@ spring: maximum-pool-size: 10 sqlserver1: jdbc-url: jdbc:sqlserver://10.19.183.6:1433;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; +# jdbc-url: jdbc:sqlserver://52.76.43.43:1433;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; username: gjb_test password: qweuio!@#$2 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index 1b57cb7..d4d2eae 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -9,12 +9,12 @@ cash_record(order_type,jwcode,name,market,activity, order_code,goods_name,good_num,permanent_gold,free_gold, payment_currency,payment_amount,received_market, - pay_type,pay_time,status,submitter_id, + pay_type,pay_time,status,submitter_id,submitter_market, voucher,remark) values(#{orderType},#{jwcode},#{name},#{market},#{activity}, #{orderCode},#{goodsName},#{goodNum},#{permanentGold},#{freeGold},#{paymentCurrency}, #{paymentAmount},#{receivedMarket},#{payType},#{payTime}, - #{status},#{submitterId},#{voucher},#{remark}) + #{status},#{submitterId},#{submitterMarket},#{voucher},#{remark}) + + update g_order + set is_synced = 1 + where id = #{orderId} + \ No newline at end of file diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index c80ae10..bef2ad6 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -156,10 +156,10 @@ cr.goods_name, cr.good_num, cr.payment_currency, - Round((payment_amount) / 100.0, 2) AS freeGold, + Round((payment_amount) / 100.0, 2) AS PaymentAmount, cr.received_currency, - Round((received_amount) / 100.0, 2) AS freeGold, - cr.handling_charge, + Round((received_amount) / 100.0, 2) AS receivedAmount, + Round((handling_charge) / 100.0, 2) AS handlingCharge, cr.pay_type, cr.received_market, cr.pay_time, @@ -186,6 +186,8 @@ a2.area_finance, a2.area_charge, a2.head_finance, + cr.refund_currency, + cr.refund_amount, m.name as marketName from cash_record cr left join admin a1 on submitter_id = a1.id @@ -219,12 +221,15 @@ - AND cr.payment_currency = #{paymentCurrency} + AND cr.payment_currency LIKE CONCAT('%', #{paymentCurrency}, '%') - - and cr.goods_name = #{goodsName} - + + AND cr.goods_name IN + + #{goodsNames} + + and cr.pay_type = #{payType} @@ -238,5 +243,13 @@ and cr.submitter_id = #{submitterId} + + + ORDER BY ${sortField} ${sortOrder} + + + ORDER BY create_time DESC + + \ No newline at end of file diff --git a/src/main/resources/mapper/MarketMapper.xml b/src/main/resources/mapper/MarketMapper.xml index eb13c18..734f78a 100644 --- a/src/main/resources/mapper/MarketMapper.xml +++ b/src/main/resources/mapper/MarketMapper.xml @@ -29,8 +29,8 @@ - + select * from markets where name=#{country} @@ -164,7 +164,7 @@ from statistics where market = #{market} and current_datetime >= #{startDate} - and current_datetime < #{endDate} + and current_datetime <= #{endDate} group by month order by month