Browse Source

微信移动端支付

guomengjiao 5 months ago
parent
commit
b4da9b951b

+ 21 - 11
.idea/workspace.xml

@@ -30,9 +30,14 @@
   <component name="ChangeListManager">
     <list default="true" id="fc9366aa-6566-4981-8149-d75e02f8e884" name="默认的" comment="微信移动端支付">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchBriefReportService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchBriefReportService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/web/ResearchBriefReportController.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/web/ResearchBriefReportController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/common/src/main/java/com/jeesite/common/constant/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/common/src/main/java/com/jeesite/common/constant/Constants.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/bjflapi/src/main/java/com/jeesite/modules/bjflapi/report/WebsiteUserOrderControllerApi.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/bjflapi/src/main/java/com/jeesite/modules/bjflapi/report/WebsiteUserOrderControllerApi.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/dao/WebsiteUserDao.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/dao/WebsiteUserDao.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/entity/WebsiteUserOrder.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/entity/WebsiteUserOrder.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/web/WebsiteUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/web/WebsiteUserController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/resources/mappings/modules/report/WebsiteUserDao.xml" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/resources/mappings/modules/report/WebsiteUserDao.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -460,14 +465,7 @@
       <workItem from="1735970618647" duration="252000" />
       <workItem from="1735970895886" duration="8433000" />
       <workItem from="1736126123480" duration="510000" />
-      <workItem from="1736127959643" duration="3171000" />
-    </task>
-    <task id="LOCAL-00022" summary="修改包名">
-      <created>1695344806349</created>
-      <option name="number" value="00022" />
-      <option name="presentableId" value="LOCAL-00022" />
-      <option name="project" value="LOCAL" />
-      <updated>1695344806349</updated>
+      <workItem from="1736127959643" duration="9582000" />
     </task>
     <task id="LOCAL-00023" summary="bug修复">
       <created>1696732890066</created>
@@ -805,7 +803,14 @@
       <option name="project" value="LOCAL" />
       <updated>1735983876261</updated>
     </task>
-    <option name="localTasksCounter" value="71" />
+    <task id="LOCAL-00071" summary="微信移动端支付">
+      <created>1736134050106</created>
+      <option name="number" value="00071" />
+      <option name="presentableId" value="LOCAL-00071" />
+      <option name="project" value="LOCAL" />
+      <updated>1736134050106</updated>
+    </task>
+    <option name="localTasksCounter" value="72" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -895,6 +900,11 @@
           <line>272</line>
           <option name="timeStamp" value="2" />
         </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java</url>
+          <line>183</line>
+          <option name="timeStamp" value="7" />
+        </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
     <watches-manager>

+ 1 - 0
common/src/main/java/com/jeesite/common/constant/Constants.java

@@ -179,6 +179,7 @@ public interface Constants {
      */
     String WEBSITE_TOKEN = "website-token";
     String WEBSITE_VALID_CODE = "websiteValidCode";
+    String WEBSITE_ORDER_URL = "websiteOrderUrl";
 
     String PREFIX_USER_FORGET_TOKEN = "bjfl:user:forget:token:";
 

+ 6 - 0
modules/bjflapi/src/main/java/com/jeesite/modules/bjflapi/report/WebsiteUserOrderControllerApi.java

@@ -1,5 +1,6 @@
 package com.jeesite.modules.bjflapi.report;
 
+import com.alipay.api.AlipayApiException;
 import com.jeesite.common.constant.Constants;
 import com.jeesite.common.entity.Page;
 import com.jeesite.common.lang.StringUtils;
@@ -181,4 +182,9 @@ public class WebsiteUserOrderControllerApi extends AbstractController {
             return "{\"code\":\"FAIL\",\"message\":\"失败\"}";
         }
     }
+
+    @PostMapping(value = "refundOrder")
+    public void refundOrder(WebsiteUserOrder websiteUserOrder) throws AlipayApiException {
+        websiteUserOrderService.refundOrder(websiteUserOrder);
+    }
 }

+ 6 - 0
modules/report/src/main/java/com/jeesite/modules/report/dao/WebsiteUserDao.java

@@ -5,6 +5,8 @@ import com.jeesite.common.mybatis.annotation.MyBatisDao;
 import com.jeesite.modules.report.entity.WebsiteUser;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 网站用户DAO接口
  * @author gg
@@ -14,4 +16,8 @@ import org.apache.ibatis.annotations.Param;
 public interface WebsiteUserDao extends CrudDao<WebsiteUser> {
 
     int updatePass(@Param("websiteUser") WebsiteUser websiteUser);
+
+    long findUserCount(@Param("rr")WebsiteUser websiteUser);
+
+    List<WebsiteUser> findUserList(@Param("rr")WebsiteUser websiteUser);
 }

+ 9 - 0
modules/report/src/main/java/com/jeesite/modules/report/entity/WebsiteUserOrder.java

@@ -44,6 +44,7 @@ public class WebsiteUserOrder extends DataEntity<WebsiteUserOrder> {
 	private String useDown;		// 是否下载过 0否 1是
 	private Integer downNum;		// 下载次数
 	private String fileType;
+	private String orderPayUrl;
 
 	private String researchBriefReportTitle;
 
@@ -168,4 +169,12 @@ public class WebsiteUserOrder extends DataEntity<WebsiteUserOrder> {
 	public void setPayMethodList(List<String> payMethodList) {
 		this.payMethodList = payMethodList;
 	}
+
+	public String getOrderPayUrl() {
+		return orderPayUrl;
+	}
+
+	public void setOrderPayUrl(String orderPayUrl) {
+		this.orderPayUrl = orderPayUrl;
+	}
 }

+ 21 - 0
modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java

@@ -17,6 +17,7 @@ import com.jeesite.modules.report.entity.WebsiteUserOrder;
 import com.jeesite.modules.report.entity.WebsiteUserOrderDown;
 import com.jeesite.modules.report.util.AlipayUtil;
 import com.jeesite.modules.sys.utils.R;
+import com.jeesite.modules.sys.utils.RedisUtil;
 import com.wechat.pay.java.core.notification.NotificationParser;
 import com.wechat.pay.java.core.notification.RequestParam;
 import com.wechat.pay.java.service.payments.model.Transaction;
@@ -52,6 +53,8 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
 	private WxPayH5Service wxPayH5Service;
 	@Resource
 	private NotificationParser notificationParser;
+	@Resource
+	private RedisUtil redisUtil;
 
 	private static Logger logger = LoggerFactory.getLogger(WebsiteUserOrderService.class);
 
@@ -84,6 +87,9 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
 		if (count > 0) {
 			r.setUseDown(Constants.enableType.YES);
 		}
+		if (r.getPayStatus().equals(Constants.orderPayStatus.WAIT)) {
+			r.setOrderPayUrl((String)redisUtil.get(Constants.WEBSITE_ORDER_URL + r.getId()));
+		}
 		return r;
 	}
 
@@ -173,6 +179,8 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
 			return R.fail("支付调用第三方失败");
 		}
 		super.save(websiteUserOrder);
+		redisUtil.set(Constants.WEBSITE_ORDER_URL + websiteUserOrder.getId(), payResult);
+		redisUtil.expire(Constants.WEBSITE_ORDER_URL + websiteUserOrder.getId(), 600);
 		return R.ok("成功", payResult);
 	}
 
@@ -344,4 +352,17 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
 		}
 		return "failure";
 	}
+
+	public void refundOrder(WebsiteUserOrder websiteUserOrder) throws AlipayApiException {
+		logger.info("refundOrder ===>{}", websiteUserOrder.getId());
+		WebsiteUserOrder order = get(websiteUserOrder);
+		if (!order.getPayStatus().equals(Constants.orderPayStatus.PAY_SUCCESS)) {
+			return;
+		}
+		if (order.getPayMethod().equals(Constants.orderPayMethod.WX) || order.getPayMethod().equals(Constants.orderPayMethod.WX_H5)) {
+			wxPayService.refund(order);
+		} else {
+			alipayUtil.refund(order);
+		}
+	}
 }

+ 7 - 1
modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserService.java

@@ -26,7 +26,13 @@ public class WebsiteUserService extends CrudService<WebsiteUserDao, WebsiteUser>
 	 */
 	@Override
 	public Page<WebsiteUser> findPage(WebsiteUser websiteUser) {
-		return super.findPage(websiteUser);
+		Page page = new Page(websiteUser.getPageNo(),websiteUser.getPageSize());
+		long count = dao.findUserCount(websiteUser);
+		List<WebsiteUser> list = dao.findUserList(websiteUser);
+		page.setCount(count);
+		page.setList(list);
+		page.initialize();
+		return page;
 	}
 	
 	/**

+ 24 - 0
modules/report/src/main/java/com/jeesite/modules/report/web/WebsiteUserController.java

@@ -67,4 +67,28 @@ public class WebsiteUserController extends BaseController {
         websiteUserService.delete(websiteUser);
         return renderResult(Global.TRUE, text("删除用户成功!"));
     }
+
+    /**
+     * 禁用用户
+     * @param websiteUser
+     */
+    @RequestMapping(value = "disable")
+    @ResponseBody
+    public String disable(WebsiteUser websiteUser) {
+        websiteUser.setStatus(WebsiteUser.STATUS_DISABLE);
+        websiteUserService.updateStatus(websiteUser);
+        return renderResult(Global.TRUE, text("禁用用户成功"));
+    }
+
+    /**
+     * 启用用户
+     * @param websiteUser
+     */
+    @RequestMapping(value = "enable")
+    @ResponseBody
+    public String enable(WebsiteUser websiteUser) {
+        websiteUser.setStatus(WebsiteUser.STATUS_NORMAL);
+        websiteUserService.updateStatus(websiteUser);
+        return renderResult(Global.TRUE, text("启用用户成功"));
+    }
 }

+ 16 - 0
modules/report/src/main/resources/mappings/modules/report/WebsiteUserDao.xml

@@ -15,4 +15,20 @@
     <update id="updatePass">
         update website_user set password = #{websiteUser.password} where id = #{websiteUser.id}
     </update>
+
+    <select id="findUserCount" resultType="java.lang.Long">
+        select count(1) from website_user where status in('0','2')
+        <include refid="user_where"/>
+    </select>
+
+    <select id="findUserList" resultType="com.jeesite.modules.report.entity.WebsiteUser">
+        select * from website_user where status in('0','2')
+        <include refid="user_where"/>
+    </select>
+
+    <sql id="user_where">
+        <if test="rr.name != null and rr.name != ''">and name like concat('%',#{rr.name},'%')</if>
+        <if test="rr.contact != null and rr.contact != ''">and contact = #{rr.contact}</if>
+        <if test="rr.email != null and rr.email != ''">and email = #{rr.email}</if>
+    </sql>
 </mapper>