Browse Source

refactor(app): 重构电子签名相关功能

- 修改了 AuthDemo 类,将 main 方法中的代码注释掉
- 更新了 DetailServiceImpl 中课程封面的处理逻辑
- 重命名 IESignServiceImpl为 ESignServiceImpl,并实现了新的接口方法
- 更新了 IESignService 接口,添加了新的方法定义
- 修改了 OrderServiceImpl 中的课程折扣和价格计算逻辑
- 在 OrderVO 中添加了新的字段用于表示小计和总价
SheepHy 1 week ago
parent
commit
b52f386c9b

+ 29 - 32
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/auth/AuthDemo.java

@@ -1,7 +1,5 @@
 package org.jeecg.modules.app.esign.auth;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
 import org.jeecg.modules.app.esign.comm.EsignHttpHelper;
 import org.jeecg.modules.app.esign.comm.EsignHttpResponse;
 import org.jeecg.modules.app.esign.constant.EsignDemoConfig;
@@ -21,43 +19,43 @@ public class AuthDemo extends Exception {
 	private static String eSignAppId=EsignDemoConfig.EsignAppId;
 	private static String eSignAppSecret=EsignDemoConfig.EsignAppSecret;
 
-	public static void main(String[] args) throws EsignDemoException {
-		Gson gson = new Gson();
-		/* 获取个人认证授权链接*/
-		EsignHttpResponse getPsnAuthUrl = getPsnAuthUrl();
-		JsonObject getPsnAuthUrlObject = gson.fromJson(getPsnAuthUrl.getBody(), JsonObject.class);
-		JsonObject data = getPsnAuthUrlObject.getAsJsonObject("data");
-		String authUrl = data.get("authUrl").getAsString();
-		System.err.println("个人授权链接:"+authUrl);
-		/* 查询个人认证授权状态*/
-		EsignHttpResponse getPsnIdentityInfo = getPsnIdentityInfo();
-		JsonObject getPsnIdentityInfoObject = gson.fromJson(getPsnIdentityInfo.getBody(), JsonObject.class);
-		String realnameStatus =getPsnIdentityInfoObject.getAsJsonObject("data").get("realnameStatus").getAsString();//授权状态authorizeUserInfo
-		System.err.println("个人认证状态:"+realnameStatus);
-		/* 获取企业认证授权链接*/
-		EsignHttpResponse getOrgAuthUrl = getOrgAuthUrl();
-		JsonObject getOrgAuthUrlObject = gson.fromJson(getOrgAuthUrl.getBody(), JsonObject.class);
-		String orgAuthUrl =	getOrgAuthUrlObject.getAsJsonObject("data").get("authUrl").getAsString();
-		System.err.println("企业授权链接:"+orgAuthUrl);
-		/* 查询企业认证授权状态*/
-		EsignHttpResponse getOrgIdentityInfo = getOrgIdentityInfo();
-		JsonObject getOrgIdentityInfoObject = gson.fromJson(getOrgIdentityInfo.getBody(), JsonObject.class);
-		String orgRealnameStatus =	getOrgIdentityInfoObject.getAsJsonObject("data").get("realnameStatus").getAsString();//授权状态authorizeUserInfo
-		System.err.println("企业认证状态:"+orgRealnameStatus);
-
-	}
+//	public static void main(String[] args) throws EsignDemoException {
+//		Gson gson = new Gson();
+//		/* 获取个人认证授权链接*/
+//		EsignHttpResponse getPsnAuthUrl = getPsnAuthUrl();
+//		JsonObject getPsnAuthUrlObject = gson.fromJson(getPsnAuthUrl.getBody(), JsonObject.class);
+//		JsonObject data = getPsnAuthUrlObject.getAsJsonObject("data");
+//		String authUrl = data.get("authUrl").getAsString();
+//		System.err.println("个人授权链接:"+authUrl);
+//		/* 查询个人认证授权状态*/
+//		EsignHttpResponse getPsnIdentityInfo = getPsnIdentityInfo();
+//		JsonObject getPsnIdentityInfoObject = gson.fromJson(getPsnIdentityInfo.getBody(), JsonObject.class);
+//		String realnameStatus =getPsnIdentityInfoObject.getAsJsonObject("data").get("realnameStatus").getAsString();//授权状态authorizeUserInfo
+//		System.err.println("个人认证状态:"+realnameStatus);
+//		/* 获取企业认证授权链接*/
+//		EsignHttpResponse getOrgAuthUrl = getOrgAuthUrl();
+//		JsonObject getOrgAuthUrlObject = gson.fromJson(getOrgAuthUrl.getBody(), JsonObject.class);
+//		String orgAuthUrl =	getOrgAuthUrlObject.getAsJsonObject("data").get("authUrl").getAsString();
+//		System.err.println("企业授权链接:"+orgAuthUrl);
+//		/* 查询企业认证授权状态*/
+//		EsignHttpResponse getOrgIdentityInfo = getOrgIdentityInfo();
+//		JsonObject getOrgIdentityInfoObject = gson.fromJson(getOrgIdentityInfo.getBody(), JsonObject.class);
+//		String orgRealnameStatus =	getOrgIdentityInfoObject.getAsJsonObject("data").get("realnameStatus").getAsString();//授权状态authorizeUserInfo
+//		System.err.println("企业认证状态:"+orgRealnameStatus);
+//
+//	}
 
 	/**
 	 * 获取个人认证链接
 	 * @return
 	 * @throws EsignDemoException
 	 */
-	public static EsignHttpResponse getPsnAuthUrl() throws EsignDemoException {
+	public static EsignHttpResponse getPsnAuthUrl(String phoneNumber) throws EsignDemoException {
 		String apiaddr="/v3/psn-auth-url";
 		//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
 		String jsonParm="{\n" +
 				"    \"psnAuthConfig\": {\n" +
-				"        \"psnAccount\": \"184xxxxx04\",\n" +
+				"        \"psnAccount\": \"" + phoneNumber + "\",\n" +
 				"        \"psnAuthPageConfig\": {\n" +
 				"            \"psnEditableFields\": [\n" +
 				"                \"name\",\n" +
@@ -94,9 +92,8 @@ public class AuthDemo extends Exception {
 	/**
 	 * 查询个人认证授权状态
 	 */
-	public static EsignHttpResponse getPsnIdentityInfo() throws EsignDemoException {
-		String psnAccount="184xxxxx04";
-		String apiaddr="/v3/persons/identity-info?psnAccount="+psnAccount;
+	public static EsignHttpResponse getPsnIdentityInfo(String phoneNumber) throws EsignDemoException {
+		String apiaddr="/v3/persons/identity-info?psnAccount="+phoneNumber;
 
 		//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
 		String jsonParm=null;

+ 19 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IESignService.java

@@ -1,4 +1,23 @@
 package org.jeecg.modules.app.service;
 
+import org.jeecg.modules.app.esign.exception.EsignDemoException;
+
 public interface IESignService {
+    /**
+     * @Author SheepHy
+     * @Description 查询用户授权状态
+     * @Date 9:42 2025/7/18
+     * @Param phoneNumber
+     * @return boolean
+     **/
+    boolean getUserIdentityInfo(String phoneNumber) throws EsignDemoException;
+
+    /**
+     * @Author SheepHy
+     * @Description 获取授权链接
+     * @Date 9:42 2025/7/18
+     * @Param
+     * @return
+     **/
+    String getAuthUrl(String phoneNumber) throws EsignDemoException;
 }

+ 2 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java

@@ -157,11 +157,13 @@ public class DetailServiceImpl implements IDetailService {
                 .like(AppCourses::getCategoryId, categoryId)
                 .eq(AppCourses::getStatus, 0)
                 .eq(AppCourses::getDelFlag, 0)).forEach(appCourses -> {
+            List<String> list = Arrays.asList(appCourses.getCover().split(","));
             PlaceInfoVO.CourseInfoVO courseInfoVO = new PlaceInfoVO.CourseInfoVO();
             BeanUtils.copyProperties(appCourses, courseInfoVO);
             courseInfoVO.setSales(getCourseSalesCount(appCourses.getId()));
             courseInfoVO.setSalesYear(getCourseSales(appCourses.getId()));
             courseInfoVO.setPriceType(isFirstPurchase(user.getId()));
+            courseInfoVO.setCover(list.get(0));
             courseInfoVO.setAddress(appSiteMapper.selectById(appCourses.getSiteId()).getAddress());
             courseInfoVOList.add(courseInfoVO);
         });

+ 33 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/ESignServiceImpl.java

@@ -0,0 +1,33 @@
+package org.jeecg.modules.app.service.impl;
+
+import com.google.gson.JsonObject;
+import lombok.extern.log4j.Log4j2;
+import org.jeecg.modules.app.esign.comm.EsignHttpResponse;
+import org.jeecg.modules.app.esign.exception.EsignDemoException;
+import org.jeecg.modules.app.service.IESignService;
+import org.springframework.stereotype.Service;
+
+import static com.alibaba.dashscope.utils.JsonUtils.gson;
+import static org.jeecg.modules.app.esign.auth.AuthDemo.*;
+
+@Service
+@Log4j2
+public class ESignServiceImpl implements IESignService {
+    @Override
+    public boolean getUserIdentityInfo(String phoneNumber) throws EsignDemoException {
+        EsignHttpResponse getPsnIdentityInfo = getPsnIdentityInfo(phoneNumber);
+        JsonObject getPsnIdentityInfoObject = gson.fromJson(getPsnIdentityInfo.getBody(), JsonObject.class);
+        String realnameStatus =getPsnIdentityInfoObject.getAsJsonObject("data").get("realnameStatus").getAsString();//授权状态authorizeUserInfo
+        return realnameStatus.equals("1");
+    }
+
+    @Override
+    public String getAuthUrl(String phoneNumber) throws EsignDemoException {
+        EsignHttpResponse getPsnAuthUrl = getPsnAuthUrl(phoneNumber);
+        JsonObject getPsnAuthUrlObject = gson.fromJson(getPsnAuthUrl.getBody(), JsonObject.class);
+        JsonObject data = getPsnAuthUrlObject.getAsJsonObject("data");
+        return data.get("authUrl").getAsString();
+    }
+
+}
+

+ 0 - 10
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/IESignServiceImpl.java

@@ -1,10 +0,0 @@
-package org.jeecg.modules.app.service.impl;
-
-import lombok.extern.log4j.Log4j2;
-import org.jeecg.modules.app.service.IESignService;
-import org.springframework.stereotype.Service;
-
-@Service
-@Log4j2
-public class IESignServiceImpl implements IESignService {
-}

+ 8 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -90,7 +90,7 @@ public class OrderServiceImpl implements IOrderService {
 
     @Override
     public boolean checkCourseLimitNum(String courseId, int limitNum) {
-        return appCoursesMapper.selectById(courseId).getLimitNum() <= limitNum;
+        return appCoursesMapper.selectById(courseId).getLimitNum() >= limitNum;
     }
 
     @Override
@@ -111,19 +111,24 @@ public class OrderServiceImpl implements IOrderService {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         OrderVO.PreviewOrderCourse previousOrderCourse = new OrderVO.PreviewOrderCourse();
         AppCourses appCourses = appCoursesMapper.selectById(courseId);
+        List<String> list = Arrays.asList(appCourses.getCover().split(","));
         boolean checkCourseDiscount = checkCourseDiscount(appCourses.getCategoryId(), user.getId());
         previousOrderCourse.setId(appCourses.getId())
-                .setCover(appCourses.getCover())
+                .setCover(list.get(0))
                 .setName(appCourses.getName())
                 .setSellingPrice(appCourses.getSellingPrice())
                 .setReminder(appCourses.getReminder())
                 .setHasDiscount(checkCourseDiscount);
         if(checkCourseDiscount){
             previousOrderCourse.setDiscountPrice(appCourses.getSellingPrice());
-            previousOrderCourse.setTotalDiscount(appCourses.getSellingPrice());
+            previousOrderCourse.setTotalDiscount(appCourses.getSellingPrice().subtract(appCourses.getSellingPrice()));
+            previousOrderCourse.setSubtotal(appCourses.getSellingPrice().subtract(appCourses.getSellingPrice()));
+            previousOrderCourse.setTotalPrice(appCourses.getSellingPrice().subtract(appCourses.getSellingPrice()));
         }else {
             previousOrderCourse.setDiscountPrice(BigDecimal.ZERO);
             previousOrderCourse.setTotalDiscount(BigDecimal.ZERO);
+            previousOrderCourse.setSubtotal(appCourses.getSellingPrice());
+            previousOrderCourse.setTotalPrice(appCourses.getSellingPrice());
         }
         return previousOrderCourse;
     }

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/OrderVO.java

@@ -65,6 +65,10 @@ public class OrderVO {
         private BigDecimal totalDiscount;
         @Schema(description = "是否有优惠")
         private Boolean hasDiscount;
+        @Schema(description = "小计")
+        private BigDecimal subtotal;
+        @Schema(description = "总价")
+        private BigDecimal totalPrice;
         @Schema(description = "提示")
         private String reminder;
     }