فهرست منبع

律所 导出

qxy 4 روز پیش
والد
کامیت
d3a7512c99

+ 4 - 4
alien-gateway/src/main/java/shop/alien/gateway/controller/SystemController.java

@@ -80,7 +80,7 @@ public class SystemController {
         }
     }
 
-    @ApiOperation("web中台系统用户注册")
+    @ApiOperation("web中台分配律师账号")
     @ApiOperationSupport(order = 3)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "userName", value = "用户名", dataType = "String", paramType = "body", required = true),
@@ -91,8 +91,8 @@ public class SystemController {
     })
     @PostMapping(value = "/register")
     public R<LifeSys> register(@RequestBody SystemRegisterDto registerDto) {
-        log.info("SystemController.register?userName={},roleId={}", registerDto.getUserName(), registerDto.getRoleId());
-        return systemService.register(registerDto.getUserName(), registerDto.getUserPassword(), registerDto.getRoleId(), registerDto.getStatus(), registerDto.getRemark());
+        log.info("SystemController.register?userName={},roleId={},phone={}", registerDto.getUserName(), registerDto.getRoleId(), registerDto.getPhone());
+        return systemService.register(registerDto.getUserName(), registerDto.getUserPassword(), registerDto.getRoleId(), registerDto.getStatus(), registerDto.getRemark(), registerDto.getPhone());
     }
 
     @ApiOperation("web中台编辑账号")
@@ -261,7 +261,7 @@ public class SystemController {
                     "            \"icon\": \"Briefcase\",\n" +
                     "            \"title\": \"对账总览\",\n" +
                     "            \"isLink\": \"\",\n" +
-                    "            \"isHide\": false,\n" +
+                    "            \"isHide\": true,\n" +
                     "            \"isFull\": false,\n" +
                     "            \"isAffix\": false,\n" +
                     "            \"isKeepAlive\": false\n" +

+ 108 - 0
alien-gateway/src/main/java/shop/alien/gateway/util/SmsUtil.java

@@ -0,0 +1,108 @@
+package shop.alien.gateway.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+/**
+ * 短信发送工具类
+ * 
+ * 注意:如果需要实际发送短信,需要在pom.xml中添加阿里云短信SDK依赖:
+ * <dependency>
+ *     <groupId>com.aliyun</groupId>
+ *     <artifactId>dysmsapi20170525</artifactId>
+ *     <version>3.0.0</version>
+ * </dependency>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Component
+public class SmsUtil {
+
+    @Value("${ali.sms.accessKeyId:}")
+    private String accessKeyId;
+
+    @Value("${ali.sms.accessKeySecret:}")
+    private String accessKeySecret;
+
+    @Value("${ali.sms.endPoint:}")
+    private String endPoint;
+
+    @Value("${ali.sms.signName:}")
+    private String signName;
+
+    @Value("${ali.sms.templateCode:}")
+    private String templateCode;
+
+    /**
+     * 发送账号密码短信
+     * 短信内容:您的账号{userName},密码是{password}
+     *
+     * @param phone    手机号
+     * @param userName 账号(用户名)
+     * @param password 密码
+     * @return 是否发送成功
+     */
+    public boolean sendAccountPasswordSms(String phone, String userName, String password) {
+        if (!StringUtils.hasText(phone)) {
+            log.warn("手机号为空,无法发送短信");
+            return false;
+        }
+
+        log.info("SmsUtil.sendAccountPasswordSms?phone={},userName={}", phone, userName);
+
+        try {
+            // 构建短信内容:您的账号{userName},密码是{password}
+            String messageContent = String.format("您的账号%s,密码是%s", userName, password);
+
+            // 如果配置为空,只记录日志(测试环境)
+            if (!StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
+                log.info("短信配置未设置,仅记录日志。短信内容:{}", messageContent);
+                return true; // 测试环境返回成功
+            }
+
+            // TODO: 如果需要实际发送短信,请取消下面的注释并添加阿里云短信SDK依赖
+            /*
+            Config config = new Config()
+                    .setEndpoint(endPoint)
+                    .setAccessKeyId(accessKeyId)
+                    .setAccessKeySecret(accessKeySecret);
+
+            // 构建发送请求
+            // 注意:这里使用模板方式,如果阿里云有专门的账号密码通知模板,请使用对应的templateCode
+            // 如果没有,可以使用通用模板,将内容作为参数传递
+            SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                    .setSignName(signName)
+                    .setTemplateCode(templateCode)
+                    .setPhoneNumbers(phone)
+                    // 根据实际模板参数调整,这里假设模板参数为 {"account":"账号","password":"密码"}
+                    .setTemplateParam("{\"account\":\"" + userName + "\",\"password\":\"" + password + "\"}");
+
+            RuntimeOptions runtime = new RuntimeOptions();
+            Client client = new Client(config);
+            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
+
+            if ("OK".equals(sendSmsResponse.getBody().getCode())) {
+                log.info("账号密码短信发送成功,phone={}, userName={}", phone, userName);
+                return true;
+            } else {
+                log.error("账号密码短信发送失败,phone={}, userName={}, error={}",
+                        phone, userName, sendSmsResponse.getBody().getMessage());
+                return false;
+            }
+            */
+            
+            // 当前实现:仅记录日志
+            log.info("账号密码短信内容:{},发送至:{}", messageContent, phone);
+            return true;
+            
+        } catch (Exception e) {
+            log.error("发送账号密码短信异常,phone={}, userName={}, error={}", phone, userName, e.getMessage(), e);
+            return false;
+        }
+    }
+}
+

+ 12 - 4
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawFirmController.java

@@ -146,12 +146,20 @@ public class LawFirmController {
         return lawFirmService.getLawFirmDetail(id);
     }
 
-    @ApiOperation(value = "导出律所数据到Excel", notes = "导出律所数据到Excel文件,包含收款账号信息")
+    @ApiOperation(value = "导出律所数据到Excel", notes = "导出律所数据到Excel文件,包含收款账号信息。支持按律所ID过滤和分页导出")
     @ApiOperationSupport(order = 8)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "firmId", value = "律所ID(可选,用于过滤特定律所)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "page", value = "页数(可选,默认1,如果pageSize为空则导出全部)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "size", value = "页容(可选,默认10,如果为空则导出全部数据)", dataType = "int", paramType = "query")
+    })
     @GetMapping("/export")
-    public void exportLawFirm(HttpServletResponse response) throws IOException {
-        log.info("LawFirmController.exportLawFirm");
-        lawFirmService.exportLawFirm(response);
+    public void exportLawFirm(HttpServletResponse response,
+                              @RequestParam(required = false) Integer firmId,
+                              @RequestParam(required = false) Integer page,
+                              @RequestParam(required = false) Integer size) throws IOException {
+        log.info("LawFirmController.exportLawFirm?firmId={},page={},size={}", firmId, page, size);
+        lawFirmService.exportLawFirm(response, firmId, page, size);
     }
 
     @ApiOperation(value = "从Excel导入律所数据", notes = "从Excel文件导入律所数据,支持批量导入。导入规则:1. 按统一社会信用代码(creditCode)分组,相同信用代码的数据会自动合并;2. 相同信用代码的多行数据会合并收款账号;3. 如果统一社会信用代码已存在,将更新现有记录并合并收款账号;4. 收款账号必须全局唯一,已存在的收款账号将跳过添加")

+ 4 - 1
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawFirmService.java

@@ -66,9 +66,12 @@ public interface LawFirmService extends IService<LawFirm> {
      * 导出律所数据到Excel
      *
      * @param response HTTP响应
+     * @param firmId 律所ID(可选)
+     * @param pageNum 页码(可选,默认1)
+     * @param pageSize 页容(可选,默认10,如果为null则导出全部)
      * @throws IOException IO异常
      */
-    void exportLawFirm(HttpServletResponse response) throws IOException;
+    void exportLawFirm(HttpServletResponse response, Integer firmId, Integer pageNum, Integer pageSize) throws IOException;
 
     /**
      * 导入律所数据从Excel

+ 8 - 6
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawFirmServiceImpl.java

@@ -525,14 +525,16 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
     }
 
     @Override
-    public void exportLawFirm(HttpServletResponse response) throws IOException {
-        log.info("LawFirmServiceImpl.exportLawFirm");
+    public void exportLawFirm(HttpServletResponse response, Integer firmId, Integer pageNum, Integer pageSize) throws IOException {
+        log.info("LawFirmServiceImpl.exportLawFirm?firmId={},pageNum={},pageSize={}", firmId, pageNum, pageSize);
         try {
-            // 使用 getPaymentPageWithFirm 的方式查询所有数据(不分页)
-            // 设置一个很大的页面大小来获取所有数据
-            Page<LawFirmPaymentVO> page = new Page<>(1, Integer.MAX_VALUE);
+            // 如果 pageSize 为 null,则导出全部数据;否则使用分页
+            int currentPage = (pageNum != null && pageNum > 0) ? pageNum : 1;
+            int size = (pageSize != null && pageSize > 0) ? pageSize : Integer.MAX_VALUE;
+            
+            Page<LawFirmPaymentVO> page = new Page<>(currentPage, size);
             IPage<LawFirmPaymentVO> pageResult = lawFirmPaymentMapper.selectPaymentPageWithFirm(
-                    page, null, null, null, null, null, null, null, null, null
+                    page, firmId, null, null, null, null, null, null, null, null
             );
 
             List<LawFirmPaymentVO> paymentList = pageResult.getRecords();