From 80fd41ea0dc602ac3ca33778f17fce5bc2e817b1 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 16 一月 2026 18:58:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java | 260 +++++
server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopListDTO.java | 23
server/dmmall_service/src/main/java/com/doumee/dao/web/request/MemberBankSaveRequest.java | 44
server/dmmall_service/src/main/java/com/doumee/config/annotation/LoginShopRequired.java | 10
server/dmmall_admin/src/main/java/com/doumee/api/business/WithdrawRecordController.java | 90 ++
server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java | 67 +
server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberBank.java | 74 +
server/dmmall_service/db/business.member_bank.permissions.sql | 6
server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java | 15
server/dmmall_service/src/main/java/com/doumee/dao/business/model/WithdrawRecord.java | 105 ++
server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportOrderResponse.java | 66 +
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java | 86 +
server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java | 9
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java | 7
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java | 5
server/dmmall_service/db/business.withdraw_record.permissions.sql | 6
server/dmmall_service/src/main/java/com/doumee/dao/web/request/WxPhoneRequest.java | 7
server/dmmall_service/src/main/java/com/doumee/dao/web/response/IntegralDataResponse.java | 29
server/dmmall_service/src/main/java/com/doumee/service/business/WithdrawRecordService.java | 106 ++
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 72 +
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java | 8
server/dmmall_service/src/main/java/com/doumee/dao/business/MemberBankMapper.java | 12
server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java | 35
server/dmmall_web/src/main/java/com/doumee/api/web/MemberBankApi.java | 57 +
server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java | 52 +
server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java | 56
server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java | 23
server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java | 24
server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java | 22
server/dmmall_service/src/main/java/com/doumee/dao/web/response/MyCustomerResponse.java | 35
server/dmmall_service/src/main/java/com/doumee/service/business/MemberBankService.java | 103 ++
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 219 +++-
server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java | 21
server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java | 2
server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java | 63 +
server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java | 13
server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java | 2
server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java | 6
server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java | 71 +
server/dmmall_service/src/main/java/com/doumee/dao/business/WithdrawRecordMapper.java | 12
server/dmmall_admin/src/main/java/com/doumee/api/business/MemberBankController.java | 90 ++
server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java | 17
server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java | 19
server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java | 274 ++++++
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Member.java | 6
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberBankServiceImpl.java | 207 ++++
server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java | 58 +
server/dmmall_service/src/main/java/com/doumee/dao/web/request/WithdrawApplyRequest.java | 28
server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java | 2
server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java | 8
server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java | 24
server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java | 28
52 files changed, 2,567 insertions(+), 117 deletions(-)
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/MemberBankController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/MemberBankController.java
new file mode 100644
index 0000000..c131968
--- /dev/null
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/MemberBankController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.MemberBank;
+import com.doumee.service.business.MemberBankService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Api(tags = "鐢ㄦ埛鎻愮幇閾惰淇℃伅")
+@RestController
+@RequestMapping("/business/memberBank")
+public class MemberBankController extends BaseController {
+
+ @Autowired
+ private MemberBankService memberBankService;
+
+ @PreventRepeat
+ @ApiOperation("鏂板缓")
+ @PostMapping("/create")
+ @RequiresPermissions("business:memberbank:create")
+ public ApiResponse create(@RequestBody MemberBank memberBank) {
+ return ApiResponse.success(memberBankService.create(memberBank));
+ }
+
+ @ApiOperation("鏍规嵁ID鍒犻櫎")
+ @GetMapping("/delete/{id}")
+ @RequiresPermissions("business:memberbank:delete")
+ public ApiResponse deleteById(@PathVariable Integer id) {
+ memberBankService.deleteById(id);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鎵归噺鍒犻櫎")
+ @GetMapping("/delete/batch")
+ @RequiresPermissions("business:memberbank:delete")
+ public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+ String [] idArray = ids.split(",");
+ List<Integer> idList = new ArrayList<>();
+ for (String id : idArray) {
+ idList.add(Integer.valueOf(id));
+ }
+ memberBankService.deleteByIdInBatch(idList);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鏍规嵁ID淇敼")
+ @PostMapping("/updateById")
+ @RequiresPermissions("business:memberbank:update")
+ public ApiResponse updateById(@RequestBody MemberBank memberBank) {
+ memberBankService.updateById(memberBank);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @PostMapping("/page")
+ @RequiresPermissions("business:memberbank:query")
+ public ApiResponse<PageData<MemberBank>> findPage (@RequestBody PageWrap<MemberBank> pageWrap) {
+ return ApiResponse.success(memberBankService.findPage(pageWrap));
+ }
+
+ @ApiOperation("瀵煎嚭Excel")
+ @PostMapping("/exportExcel")
+ @RequiresPermissions("business:memberbank:exportExcel")
+ public void exportExcel (@RequestBody PageWrap<MemberBank> pageWrap, HttpServletResponse response) {
+ ExcelExporter.build(MemberBank.class).export(memberBankService.findPage(pageWrap).getRecords(), "鐢ㄦ埛鎻愮幇閾惰淇℃伅", response);
+ }
+
+ @ApiOperation("鏍规嵁ID鏌ヨ")
+ @GetMapping("/{id}")
+ @RequiresPermissions("business:memberbank:query")
+ public ApiResponse findById(@PathVariable Integer id) {
+ return ApiResponse.success(memberBankService.findById(id));
+ }
+}
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/WithdrawRecordController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/WithdrawRecordController.java
new file mode 100644
index 0000000..bc6ae79
--- /dev/null
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/WithdrawRecordController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.WithdrawRecord;
+import com.doumee.service.business.WithdrawRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Api(tags = "鐢ㄦ埛鎻愮幇璁板綍")
+@RestController
+@RequestMapping("/business/withdrawRecord")
+public class WithdrawRecordController extends BaseController {
+
+ @Autowired
+ private WithdrawRecordService withdrawRecordService;
+
+ @PreventRepeat
+ @ApiOperation("鏂板缓")
+ @PostMapping("/create")
+ @RequiresPermissions("business:withdrawrecord:create")
+ public ApiResponse create(@RequestBody WithdrawRecord withdrawRecord) {
+ return ApiResponse.success(withdrawRecordService.create(withdrawRecord));
+ }
+
+ @ApiOperation("鏍规嵁ID鍒犻櫎")
+ @GetMapping("/delete/{id}")
+ @RequiresPermissions("business:withdrawrecord:delete")
+ public ApiResponse deleteById(@PathVariable Integer id) {
+ withdrawRecordService.deleteById(id);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鎵归噺鍒犻櫎")
+ @GetMapping("/delete/batch")
+ @RequiresPermissions("business:withdrawrecord:delete")
+ public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+ String [] idArray = ids.split(",");
+ List<Integer> idList = new ArrayList<>();
+ for (String id : idArray) {
+ idList.add(Integer.valueOf(id));
+ }
+ withdrawRecordService.deleteByIdInBatch(idList);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鏍规嵁ID淇敼")
+ @PostMapping("/updateById")
+ @RequiresPermissions("business:withdrawrecord:update")
+ public ApiResponse updateById(@RequestBody WithdrawRecord withdrawRecord) {
+ withdrawRecordService.updateById(withdrawRecord);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @PostMapping("/page")
+ @RequiresPermissions("business:withdrawrecord:query")
+ public ApiResponse<PageData<WithdrawRecord>> findPage (@RequestBody PageWrap<WithdrawRecord> pageWrap) {
+ return ApiResponse.success(withdrawRecordService.findPage(pageWrap));
+ }
+
+ @ApiOperation("瀵煎嚭Excel")
+ @PostMapping("/exportExcel")
+ @RequiresPermissions("business:withdrawrecord:exportExcel")
+ public void exportExcel (@RequestBody PageWrap<WithdrawRecord> pageWrap, HttpServletResponse response) {
+ ExcelExporter.build(WithdrawRecord.class).export(withdrawRecordService.findPage(pageWrap).getRecords(), "鐢ㄦ埛鎻愮幇璁板綍", response);
+ }
+
+ @ApiOperation("鏍规嵁ID鏌ヨ")
+ @GetMapping("/{id}")
+ @RequiresPermissions("business:withdrawrecord:query")
+ public ApiResponse findById(@PathVariable Integer id) {
+ return ApiResponse.success(withdrawRecordService.findById(id));
+ }
+}
diff --git a/server/dmmall_service/db/business.member_bank.permissions.sql b/server/dmmall_service/db/business.member_bank.permissions.sql
new file mode 100644
index 0000000..27d73e4
--- /dev/null
+++ b/server/dmmall_service/db/business.member_bank.permissions.sql
@@ -0,0 +1,6 @@
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:memberbank:create', '鏂板缓鐢ㄦ埛鎻愮幇閾惰淇℃伅', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:memberbank:delete', '鍒犻櫎鐢ㄦ埛鎻愮幇閾惰淇℃伅', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:memberbank:update', '淇敼鐢ㄦ埛鎻愮幇閾惰淇℃伅', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:memberbank:query', '鏌ヨ鐢ㄦ埛鎻愮幇閾惰淇℃伅', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:memberbank:exportExcel', '瀵煎嚭鐢ㄦ埛鎻愮幇閾惰淇℃伅(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+
diff --git a/server/dmmall_service/db/business.withdraw_record.permissions.sql b/server/dmmall_service/db/business.withdraw_record.permissions.sql
new file mode 100644
index 0000000..ef80ef7
--- /dev/null
+++ b/server/dmmall_service/db/business.withdraw_record.permissions.sql
@@ -0,0 +1,6 @@
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:withdrawrecord:create', '鏂板缓鐢ㄦ埛鎻愮幇璁板綍', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:withdrawrecord:delete', '鍒犻櫎鐢ㄦ埛鎻愮幇璁板綍', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:withdrawrecord:update', '淇敼鐢ㄦ埛鎻愮幇璁板綍', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:withdrawrecord:query', '鏌ヨ鐢ㄦ埛鎻愮幇璁板綍', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:withdrawrecord:exportExcel', '瀵煎嚭鐢ㄦ埛鎻愮幇璁板綍(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java
index 065a6cd..2567497 100644
--- a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java
+++ b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java
@@ -18,14 +18,14 @@
/**
* 鐢ㄦ埛id
*/
- private Integer memberId;
+ private String memberId;
private long expire;
public JwtPayLoad() {
}
- public JwtPayLoad(Integer memberId) {
+ public JwtPayLoad(String memberId) {
this.memberId = memberId;
}
@@ -52,7 +52,7 @@
return new JwtPayLoad();
} else {
JwtPayLoad jwtPayLoad = new JwtPayLoad();
- jwtPayLoad.setMemberId((Integer) map.get("memberId"));
+ jwtPayLoad.setMemberId(map.get("memberId").toString());
return jwtPayLoad;
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
index e368861..a94a60c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
+++ b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
@@ -43,6 +43,8 @@
public static final String HEADER_KEY = "token";
//鍙栧�煎悕绉�
public static final String UserId_Name = "AppUserId";
+ //鍙栧�煎悕绉�
+ public static final String ShopId_Name = "AppShopId";
//鍔犲瘑瀵嗛挜
private final static String jwtSecret = "MhAjU9poLf8ko54K25XBDtonaL33vtt1";
//杩囨湡鏃堕棿(s) 86400L=1澶� 604800L=7澶�
@@ -126,14 +128,14 @@
/**
* 鐢熸垚token,鏍规嵁userId鍜岃繃鏈熸椂闂�
*/
- public static String generateToken(Integer userId, Date exppiredDate, Map<String, Object> claims) {
+ public static String generateToken(String userId, Date exppiredDate, Map<String, Object> claims) {
final Date createdDate = new Date();
String secret = getJwtSecret();
if (claims == null) {
return Jwts.builder()
- .setSubject(userId.toString())
+ .setSubject(userId)
.setIssuedAt(createdDate)
.setExpiration(exppiredDate)
.signWith(SignatureAlgorithm.HS512, secret)
@@ -141,7 +143,7 @@
} else {
return Jwts.builder()
.setClaims(claims)
- .setSubject(userId.toString())
+ .setSubject(userId)
.setIssuedAt(createdDate)
.setExpiration(exppiredDate)
.signWith(SignatureAlgorithm.HS512, secret)
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
index a5a63da..1f557b2 100644
--- a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
+++ b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
@@ -1,6 +1,7 @@
package com.doumee.config.Jwt;
import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
@@ -51,7 +52,7 @@
//鑾峰彇token
String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
if (StringUtils.isNotBlank(token)) {
- checkLogin(request,response);
+ checkMemberLogin(request,response);
} else {
throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
}
@@ -59,11 +60,29 @@
//鑾峰彇token
String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
if (StringUtils.isNotBlank(token)) {
- checkLogin(request,response);
+ checkMemberLogin(request,response);
+ } else {
+ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
+ }
+ }else if (beanType.isAnnotationPresent(LoginShopRequired.class)) {
+ //鑾峰彇token
+ String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
+ if (StringUtils.isNotBlank(token)) {
+ checkShopLogin(request,response);
+ } else {
+ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
+ }
+ }else if (handlerMethod.hasMethodAnnotation(LoginShopRequired.class)){
+ //鑾峰彇token
+ String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
+ if (StringUtils.isNotBlank(token)) {
+ checkShopLogin(request,response);
} else {
throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
}
}
+
+
return true;
}
};
@@ -72,7 +91,7 @@
- public Boolean checkLogin(HttpServletRequest request, HttpServletResponse response){
+ public Boolean checkMemberLogin(HttpServletRequest request, HttpServletResponse response){
String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
try {
//鍒ゆ柇Token鏄惁瓒呮椂
@@ -81,7 +100,11 @@
throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
}
//鑾峰彇璐﹀彿ID
- Integer memberId = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
+ String memberIdInfo = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
+ if(StringUtils.isBlank(memberIdInfo)||!memberIdInfo.startsWith(Constants.MEMBER_PREFIX)){
+ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+ }
+ Integer memberId = Integer.valueOf(memberIdInfo.replace(Constants.MEMBER_PREFIX,""));
Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,0) from Member where id = ?", Integer.class, memberId);
if(isDeleted== Constants.ONE){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
@@ -102,6 +125,42 @@
}
}
+
+ public Boolean checkShopLogin(HttpServletRequest request, HttpServletResponse response){
+ String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
+ try {
+ //鍒ゆ柇Token鏄惁瓒呮椂
+ boolean expiration = JwtTokenUtil.isTokenExpired(token);
+ if (expiration) {
+ throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
+ }
+ //鑾峰彇璐﹀彿ID
+ String shopInfo = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
+ if(StringUtils.isBlank(shopInfo)||!shopInfo.startsWith(Constants.SHOP_PREFIX)){
+ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+ }
+ Integer shopId = Integer.valueOf(shopInfo.replace(Constants.SHOP_PREFIX,""));
+ Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,0) from shop where id = ?", Integer.class, shopId);
+ if(isDeleted== Constants.ONE){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+ }
+ Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,0) from shop where id = ?", Integer.class, shopId);
+ if(isForbidden== Constants.ONE){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
+ }
+ Integer count = dao.queryForObject("select count(1) from shop where id = ?", Integer.class, shopId);
+ if (count != null && count > 0) {
+ request.setAttribute(JwtTokenUtil.ShopId_Name, shopId);
+ return true;
+ }else{
+ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+ }
+ } catch (IllegalArgumentException | JwtException e) {
+ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
+ }
+ }
+
+
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/annotation/LoginShopRequired.java b/server/dmmall_service/src/main/java/com/doumee/config/annotation/LoginShopRequired.java
new file mode 100644
index 0000000..d4b5187
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/config/annotation/LoginShopRequired.java
@@ -0,0 +1,10 @@
+package com.doumee.config.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD,ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LoginShopRequired {}
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
index b2cb97c..67eb4b5 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -42,6 +42,9 @@
public static final String ORDER_SET ="ORDER_SET" ;
public static final String INTEGRAL_SET ="INTEGRAL_SET" ;
+ public static final String MEMBER_PREFIX = "member_";
+ public static final String SHOP_PREFIX = "shop_";
+
/**
* mq tag
*/
@@ -128,11 +131,14 @@
public static final String COFFEE_ARTICLE_BACKGROUND = "COFFEE_ARTICLE_BACKGROUND";
+ public static final String TRANSFER_FILE = "TRANSFER_FILE";
+
public interface RedisKeys {
public static final String GOODSORDER_KEY = "ordercode_";
public static final String ACTIVITY_SIGN_KEY = "actcode_";
public static final String AFTERSALE_KEY = "salecode_";
+ public static final String WITHDRAW_KEY = "withdraw_";
}
/**
* 浼佷笟鏁版嵁鏉ユ簮 0骞冲彴娉ㄥ唽 1鍚庡彴瀵煎叆
@@ -326,6 +332,7 @@
SHOP_PICTURE(7, "鍟嗗鍥剧墖澶氬浘", "鍟嗗鍥剧墖澶氬浘"),
AFTERSALE_APPLY(8, "鐢宠鍞悗琛ュ厖璇存槑闄勪欢", "鐢宠鍞悗琛ュ厖璇存槑闄勪欢"),
AFTERSALE_KD(9, "鐢宠鍞悗閭瘎璇存槑闄勪欢", "鐢宠鍞悗閭瘎璇存槑闄勪欢"),
+ TRANSFER_FILE(10, "鎵撴鍑瘉", "鎵撴鍑瘉"),
;
// 鎴愬憳鍙橀噺
private String name;
@@ -867,7 +874,11 @@
ORDER_DONATE(15,"璁㈠崟璧犻�佺Н鍒�","璁㈠崟璧犻�佺Н鍒�",0),
ORDER_DONE_AMOUNT(16,"璁㈠崟缁撶畻閲戦","璁㈠崟缁撶畻閲戦",0),
- SHOP_ORDER_SETTLEMENT(16,"涓嬪崟缁撶畻閲戦","涓嬪崟缁撶畻閲戦",0), //缁忛攢鍟嗕笅鍗曠粨绠楅噾棰�
+ WITHDRAW_APPLY(17,"浣欓鎻愮幇","浣欓鎻愮幇",0), //缁忛攢鍟嗕笅鍗曠粨绠楅噾棰�
+
+
+
+
SHOP_ORDER_CANCEL_SETTLEMENT(17,"鍙栨秷璁㈠崟缁撶畻閲戦杩旇繕","鍙栨秷璁㈠崟缁撶畻閲戦杩旇繕",0), //鍙栨秷璁㈠崟缁撶畻閲戦杩旇繕
SHOP_YEAR_SETTLEMENT(18,"骞村害缁撶畻","骞村害缁撶畻",0) //骞村害缁撶畻
;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
index af4c3a6..d031664 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
@@ -30,7 +30,7 @@
IPage<MemberOrderResponse> goodsOrderPage(IPage<MemberOrderResponse> page, @Param(Constants.WRAPPER) Wrapper wrapper);
- @Select(" select g.CODE AS code , g.id as orderId , g.CREATE_DATE as createDate , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as payStatus ," +
+ @Select(" select g.CODE AS code , g.remark as remark , g.id as orderId , g.MEMBER_ID as memberId , g.CREATE_DATE as createDate , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as payStatus ," +
" g.COUPON_PRICE as couponPrice , g.price , g.LINKNAME as linkName , g.LINKPHONE as linkPhone , g.LINKADDR as linkAddress , " +
"g.KD_DATE as kdDate , g.KD_NAME as kdName , g.KD_CODE as kdCode , g.INTEGRAL_PRICE as integral , SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
" , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName ,s.id as shopId,g.exchange_code as exchangeCode " +
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberBankMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberBankMapper.java
new file mode 100644
index 0000000..33ae018
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberBankMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.MemberBank;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+public interface MemberBankMapper extends BaseMapper<MemberBank> {
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/WithdrawRecordMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/WithdrawRecordMapper.java
new file mode 100644
index 0000000..9e7c199
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/WithdrawRecordMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.WithdrawRecord;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+public interface WithdrawRecordMapper extends BaseMapper<WithdrawRecord> {
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 1d9befb..0d60570 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -224,6 +224,9 @@
@ApiModelProperty(value = "鐢佃瘽")
@TableField(exist = false)
private String phone;
+ @ApiModelProperty(value = "澶村儚淇℃伅")
+ @TableField(exist = false)
+ private String imgurl;
@ApiModelProperty(value = "鏀惰揣鍦板潃")
@TableField(exist = false)
@@ -263,4 +266,8 @@
@TableField(exist = false)
private String everyDay;
+ @ApiModelProperty(value = "璁㈠崟缁撶畻閲戦")
+ @TableField(exist = false)
+ private BigDecimal shopSettlement;
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Member.java
index 4a5c6f2..aafedd4 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -151,6 +151,9 @@
@ApiModelProperty(value = "缁戝畾鍟嗛摵涓婚敭 shop:id 鍒嗛攢浜�")
private Integer bindShopId;
+ @ApiModelProperty(value = "缁戝畾鏃堕棿")
+ private Date bindShopDate;
+
@ApiModelProperty(value = "鏂囦欢鍦板潃鍏ㄨ矾寰�")
@TableField(exist = false)
private String imgFullUrl;
@@ -170,4 +173,7 @@
@TableField(exist = false)
private Date endtime;
+
+
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberBank.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberBank.java
new file mode 100644
index 0000000..255a3b5
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberBank.java
@@ -0,0 +1,74 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鐢ㄦ埛鎻愮幇閾惰淇℃伅
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Data
+@ApiModel("鐢ㄦ埛鎻愮幇閾惰淇℃伅")
+@TableName("`member_bank`")
+public class MemberBank {
+
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ @ExcelColumn(name="涓婚敭")
+ private Integer id;
+
+ @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+ @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+ private Integer creator;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @ExcelColumn(name="鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date createDate;
+
+ @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+ @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+ private Integer editor;
+
+ @ApiModelProperty(value = "鏇存柊鏃堕棿")
+ @ExcelColumn(name="鏇存柊鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date editDate;
+
+ @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+ @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+ private Integer isdeleted;
+
+ @ApiModelProperty(value = "澶囨敞")
+ @ExcelColumn(name="澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "閾惰鍚嶇О")
+ @ExcelColumn(name="閾惰鍚嶇О")
+ private String bankName;
+
+ @ApiModelProperty(value = "閾惰璐︽埛")
+ @ExcelColumn(name="閾惰璐︽埛")
+ private String bankAccount;
+
+ @ApiModelProperty(value = "寮�鎴蜂汉濮撳悕")
+ @ExcelColumn(name="寮�鎴蜂汉濮撳悕")
+ private String name;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭锛堝叧鑱攎ember琛級", example = "1")
+ @ExcelColumn(name="鐢ㄦ埛涓婚敭锛堝叧鑱攎ember琛級")
+ private Integer memberId;
+
+ @ApiModelProperty(value = "鏄惁榛樿 0鍚� 1鏄�", example = "1")
+ @ExcelColumn(name="鏄惁榛樿 0鍚� 1鏄�")
+ private Integer isDefault;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
index ee9dd3f..91eaecf 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
@@ -87,6 +87,9 @@
@ApiModelProperty(value = "娉曚汉鐢佃瘽")
@ExcelColumn(name="娉曚汉鐢佃瘽")
private String legalPersonPhone;
+ @ApiModelProperty(value = "寰俊openId")
+ @ExcelColumn(name="寰俊openId")
+ private String openId;
@ApiModelProperty(value = "韬唤璇佸弽闈㈢収")
@ExcelColumn(name="韬唤璇佸弽闈㈢収")
@@ -123,7 +126,7 @@
@ExcelColumn(name="绉垎绱")
private BigDecimal totalIntegral;
- @ApiModelProperty(value = "鍙彁鎴愰噾棰�")
+ @ApiModelProperty(value = "鍙彁鐜伴噾棰�")
@ExcelColumn(name="鍙彁鎴愰噾棰�")
private BigDecimal amount;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/WithdrawRecord.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/WithdrawRecord.java
new file mode 100644
index 0000000..65c0c87
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/WithdrawRecord.java
@@ -0,0 +1,105 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鎻愮幇璁板綍
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Data
+@ApiModel("鐢ㄦ埛鎻愮幇璁板綍")
+@TableName("`withdraw_record`")
+public class WithdrawRecord {
+
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ @ExcelColumn(name="涓婚敭")
+ private Integer id;
+
+ @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+ @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+ private Integer creator;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @ExcelColumn(name="鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date createDate;
+
+ @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+ @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+ private Integer editor;
+
+ @ApiModelProperty(value = "鏇存柊鏃堕棿")
+ @ExcelColumn(name="鏇存柊鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date editDate;
+
+ @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+ @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+ private Integer isdeleted;
+
+ @ApiModelProperty(value = "澶囨敞")
+ @ExcelColumn(name="澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭锛堝叧鑱攎ember琛級", example = "1")
+ @ExcelColumn(name="鐢ㄦ埛涓婚敭锛堝叧鑱攎ember琛級")
+ private Integer memberId;
+
+ @ApiModelProperty(value = "娴佹按鍙�", example = "1")
+ @ExcelColumn(name="娴佹按鍙�")
+ private Long code;
+
+ @ApiModelProperty(value = "鎻愮幇閲戦", example = "1")
+ @ExcelColumn(name="鎻愮幇閲戦")
+ private BigDecimal amount;
+
+
+
+ @ApiModelProperty(value = "閾惰涓婚敭锛堝叧鑱� member_bank 琛級", example = "1")
+ @ExcelColumn(name="閾惰涓婚敭锛堝叧鑱� member_bank 琛級")
+ private Integer bankId;
+
+ @ApiModelProperty(value = "鐘舵�侊細0=寰呭鎵癸紱1=瀹℃壒閫氳繃锛�2=瀹℃壒椹冲洖", example = "1")
+ @ExcelColumn(name="鐘舵�侊細0=寰呭鎵癸紱1=瀹℃壒閫氳繃锛�2=瀹℃壒椹冲洖")
+ private Integer status;
+
+ @ApiModelProperty(value = "瀹℃壒浜轰富閿�", example = "1")
+ @ExcelColumn(name="瀹℃壒浜轰富閿�")
+ private Integer auditUser;
+
+ @ApiModelProperty(value = "瀹℃壒鏃堕棿")
+ @ExcelColumn(name="瀹℃壒鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date auditTime;
+
+ @ApiModelProperty(value = "瀹℃壒澶囨敞")
+ @ExcelColumn(name="瀹℃壒澶囨敞")
+ private String auditRemark;
+
+ @ApiModelProperty(value = "鎵撴閾惰")
+ @ExcelColumn(name="鎵撴閾惰")
+ private String payBank;
+
+ @ApiModelProperty(value = "鎻愮幇閾惰鍚嶇О", example = "1")
+ @TableField(exist = false)
+ private String bankName;
+
+ @ApiModelProperty(value = "鎵撴鍑瘉", example = "1")
+ @TableField(exist = false)
+ private List<Multifile> payFileList;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java
new file mode 100644
index 0000000..bdc012c
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.web.dto;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("绉垎鏄庣粏鏌ヨ璇锋眰绫�")
+public class IntegralRecordDTO {
+
+ @ApiModelProperty(value = "鏀舵敮绫诲瀷 0鏀跺叆 1鏀嚭")
+ private Integer type;
+
+ @ApiModelProperty(value = "鏁版嵁绫诲瀷锛�0=娑堣垂鑰呯Н鍒嗭紱1=缁忛攢鍟嗙Н鍒嗭紱2=缁忛攢鍟嗙粨绠楅噾棰濓紱")
+ private Integer userType;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭鎴栧晢鎴蜂富閿�")
+ private Integer memberId;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java
new file mode 100644
index 0000000..8a4e3bc
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.web.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("缁忛攢鍟嗙櫥褰曡姹傚璞�")
+public class ShopLoginDTO {
+
+ @ApiModelProperty(value = "鍏宠仈鐢ㄦ埛涓婚敭")
+ private Integer memberId;
+
+ @ApiModelProperty(value = "openid")
+ private String openid;
+
+ @ApiModelProperty(value = "鐢ㄦ埛鍚嶇О")
+ private String userName;
+
+ @ApiModelProperty(value = "瀵嗙爜")
+ private String password;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopListDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopListDTO.java
new file mode 100644
index 0000000..83d3526
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopListDTO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.web.dto.shop;
+
+import com.doumee.dao.web.dto.MultiFileDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel("灏忕▼搴� 閫夋嫨鍟嗘埛璇锋眰绫�")
+public class ShopListDTO {
+
+ @ApiModelProperty(value = "鍩庡競涓婚敭", example = "1")
+ private Integer cityId;
+ @ApiModelProperty(value = "瀹氫綅缁村害", example = "1")
+ private String lat;
+ @ApiModelProperty(value = "瀹氫綅缁忓害", example = "1")
+ private String lgt;
+ @ApiModelProperty(value = "搴楅摵鍚嶇О", example = "1")
+ private String shopName;
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MemberBankSaveRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MemberBankSaveRequest.java
new file mode 100644
index 0000000..af9e6db
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MemberBankSaveRequest.java
@@ -0,0 +1,44 @@
+package com.doumee.dao.web.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鐢ㄦ埛鎻愮幇閾惰淇℃伅
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Data
+@ApiModel("鐢ㄦ埛鎻愮幇閾惰淇℃伅淇濆瓨璇锋眰绫�")
+public class MemberBankSaveRequest {
+
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ private Integer id;
+
+ @ApiModelProperty(value = "閾惰鍚嶇О")
+ private String bankName;
+
+ @ApiModelProperty(value = "閾惰璐︽埛")
+ private String bankAccount;
+
+ @ApiModelProperty(value = "寮�鎴蜂汉濮撳悕")
+ private String name;
+
+ @ApiModelProperty(value = "鏄惁榛樿 0鍚� 1鏄�", example = "1")
+ private Integer isDefault;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭", example = "1")
+ private Integer memberId;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java
new file mode 100644
index 0000000..1ab8f33
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java
@@ -0,0 +1,22 @@
+package com.doumee.dao.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("鎴戠殑瀹㈡埛璇锋眰绫�")
+public class MyCustomerRequest {
+
+
+ @ApiModelProperty(value = "鐢ㄦ埛鏄电О銆佹墜鏈哄彿")
+ private String memberIfo;
+
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java
new file mode 100644
index 0000000..71799a0
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("鎴戠殑閿�鍞姤琛ㄨ姹傜被")
+public class SaleReportRequest {
+
+ @ApiModelProperty(value = "鏃ユ湡绫诲瀷锛�0=浠婃棩锛�1=鏈湀锛�2=涓婃湀锛�3=鍥哄畾鏈堜唤锛�4=鑷畾涔夋棩鏈�")
+ private Integer dateType;
+
+ @ApiModelProperty(value = "寮�濮嬫棩鏈� yyyy-MM-dd dateType = 3 銆� 4浣跨敤")
+ private String startDate;
+
+ @ApiModelProperty(value = "缁撴潫鏃ユ湡 yyyy-MM-dd dateType = 4浣跨敤")
+ private String endDate;
+
+ @ApiModelProperty(value = "鏄惁鏌ヨ璇︽儏锛�0=鍚︼紱1=鏄紱")
+ private Integer queryType;
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java
new file mode 100644
index 0000000..15e7229
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("鎴戠殑閿�鍞姤琛ㄨ姹傜被")
+public class ShopOrderRequest {
+
+ @ApiModelProperty(value = "璁㈠崟鐘舵�侊細鐘舵�� 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣")
+ private Integer status;
+
+ @ApiModelProperty(value = "缁忛攢鍟嗕富閿�")
+ private Integer shopId;
+
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WithdrawApplyRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WithdrawApplyRequest.java
new file mode 100644
index 0000000..daed3dc
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WithdrawApplyRequest.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 鐢ㄦ埛鎻愮幇閾惰淇℃伅
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Data
+@ApiModel("鐢ㄦ埛鎻愮幇璇锋眰绫�")
+public class WithdrawApplyRequest {
+
+
+ @ApiModelProperty(value = "鎻愮幇閾惰涓婚敭")
+ private Integer bankId;
+
+ @ApiModelProperty(value = "鎻愮幇閲戦")
+ private BigDecimal amount;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭锛堝叧鑱攕hop琛ㄤ富閿級", example = "1")
+ private Integer memberId;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WxPhoneRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WxPhoneRequest.java
index ee29f01..9d90da6 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WxPhoneRequest.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/WxPhoneRequest.java
@@ -30,6 +30,11 @@
@ApiModelProperty(value = "sessionKey")
private String sessionKey;
- private Integer memberId;
+ @NotEmpty(message = "openid 涓嶈兘涓虹┖")
+ @ApiModelProperty(value = "openid")
+ private String openid;
+
+ @ApiModelProperty(value = "閭�璇风爜")
+ private Integer recId;
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java
index b37b8b2..eb44069 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java
@@ -26,5 +26,7 @@
@ApiModelProperty(value = "鐢ㄦ埛淇℃伅")
private Member member;
+ @ApiModelProperty(value = "鐢ㄦ埛openid")
+ private String openid;
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/IntegralDataResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/IntegralDataResponse.java
new file mode 100644
index 0000000..a1461b9
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/IntegralDataResponse.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.web.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 10:56
+ */
+@Data
+@ApiModel("绉垎鎯呭喌杩斿洖绫�")
+public class IntegralDataResponse {
+
+
+ @ApiModelProperty(value = "鍓╀綑鍙敤绉垎")
+ private BigDecimal surplusIntegral;
+
+ @ApiModelProperty(value = "鍗冲皢杩囨湡绉垎")
+ private BigDecimal expiredIntegral;
+
+ @ApiModelProperty(value = "绉垎璇存槑")
+ private String info;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/MyCustomerResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/MyCustomerResponse.java
new file mode 100644
index 0000000..9b78979
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/MyCustomerResponse.java
@@ -0,0 +1,35 @@
+package com.doumee.dao.web.response;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("鎴戠殑瀹㈡埛璇锋眰绫�")
+public class MyCustomerResponse {
+
+ @ApiModelProperty(value = "鐢ㄦ埛澶村儚")
+ private String imgFullUrl;
+
+ @ApiModelProperty(value = "鐢ㄦ埛鏄电О")
+ private String nickName;
+
+ @ApiModelProperty(value = "鎵嬫満鍙�")
+ private String phone;
+
+ @ApiModelProperty(value = "缁戝畾鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date bindShopDate;
+
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportOrderResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportOrderResponse.java
new file mode 100644
index 0000000..071e06b
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportOrderResponse.java
@@ -0,0 +1,66 @@
+package com.doumee.dao.web.response;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.business.model.GoodsorderDetail;
+import com.doumee.dao.business.model.PlanorderDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("閿�鍞姤琛ㄨ鍗曟槑缁嗚姹傝繑鍥炰俊鎭�")
+public class SaleReportOrderResponse {
+
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ private Integer id;
+
+ @ApiModelProperty(value = "璁㈠崟瀹炰粯浠锋牸锛堝厓/鍜栬眴锛�", example = "1")
+ private BigDecimal price;
+
+ @ApiModelProperty(value = "閭垂閲戦", example = "1")
+ private BigDecimal mailPrice;
+
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ private Date createDate;
+
+ @ApiModelProperty(value = "璁㈠崟缂栧彿", example = "1")
+ private Long code;
+
+
+ @ApiModelProperty(value = "鏀惰揣绫诲瀷锛�0=蹇�掗厤閫侊紱1=闂ㄥ簵鑷彁锛�", example = "1")
+ private Integer receiveType;
+
+ @ApiModelProperty(value = "鍞悗宸查��娆鹃噾棰�", example = "1")
+ private BigDecimal aftersaleMoney;
+
+
+ @ApiModelProperty(value = "鐘舵�� 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣", example = "1")
+ private Integer status;
+
+ @ApiModelProperty(value = "鏄电О")
+ private String nickName;
+
+ @ApiModelProperty(value = "鐢佃瘽")
+ private String phone;
+
+ @ApiModelProperty(value = "璁㈠崟缁撶畻閲戦")
+ private BigDecimal shopSettlement;
+
+
+
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java
new file mode 100644
index 0000000..9e554f5
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java
@@ -0,0 +1,35 @@
+package com.doumee.dao.web.response;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("閿�鍞姤琛ㄨ姹傝繑鍥炰俊鎭�")
+public class SaleReportResponse {
+
+ @ApiModelProperty(value = "閿�鍞")
+ private BigDecimal saleTotal;
+
+ @ApiModelProperty(value = "璁㈠崟鏁伴噺")
+ private Integer orderNum;
+
+ @ApiModelProperty(value = "缁撶畻鍒╂鼎棰�")
+ private BigDecimal profitTotal;
+
+
+ @ApiModelProperty(value ="璁㈠崟鍒楄〃")
+ private List<SaleReportOrderResponse> saleReportOrderResponseList;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java
new file mode 100644
index 0000000..d0f65ae
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java
@@ -0,0 +1,71 @@
+package com.doumee.dao.web.response;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.business.model.Areas;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 10:56
+ */
+@Data
+@ApiModel("鍟嗘埛淇℃伅鏌ヨ杩斿洖绫�")
+public class ShopInfoResponse {
+
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ private Integer id;
+
+ @ApiModelProperty(value = "闂ㄥご鐓�")
+ private String imgurl;
+
+ @ApiModelProperty(value = "搴楅摵鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "鐪熷疄濮撳悕")
+ private String realname;
+
+ @ApiModelProperty(value = "鎵嬫満鍙�")
+ private String phone;
+
+ @ApiModelProperty(value = "钀ヤ笟寮�濮嬫椂闂�")
+ private String startTime;
+
+ @ApiModelProperty(value = "鍦板潃")
+ private String addr;
+
+ @ApiModelProperty(value = "鍟嗗缂栫爜")
+ private String code;
+
+ @ApiModelProperty(value = "绉垎浣欓")
+ private BigDecimal integral;
+
+ @ApiModelProperty(value = "钀ヤ笟鎵х収")
+ private String businessImg;
+
+ @ApiModelProperty(value = "韬唤璇佹闈㈢収")
+ private String idcardImg;
+
+ @ApiModelProperty(value = "韬唤璇佸弽闈㈢収")
+ @ExcelColumn(name="韬唤璇佸弽闈㈢収")
+ private String idcardImgBack;
+
+ @ApiModelProperty(value = "閿�鍞ā寮� 0骞冲彴閾鸿揣 1鑷富閲囪喘")
+ private Integer saleType;
+
+ @ApiModelProperty(value = "娉曚汉濮撳悕")
+ private String legalPersonName;
+
+ @ApiModelProperty(value = "娉曚汉鐢佃瘽")
+ private String legalPersonPhone;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
index efb7ddb..a076e15 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
@@ -1,5 +1,6 @@
package com.doumee.dao.web.response.goods;
+import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberCoupon;
import com.doumee.dao.business.model.Shop;
import io.swagger.annotations.ApiModel;
@@ -22,6 +23,9 @@
@ApiModelProperty(value = "璁㈠崟涓婚敭", example = "1")
private Integer orderId;
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭", example = "1")
+ private Integer memberId;
@ApiModelProperty(value = "鍊掕鏃�", example = "1")
private Long countdown;
@@ -69,7 +73,7 @@
private String linkAddress;
@ApiModelProperty(value = "璁㈠崟澶囨敞", example = "1")
- private String memberInfo;
+ private String remark;
@ApiModelProperty(value = "璁㈠崟鍙�", example = "1")
private String code;
@@ -103,6 +107,9 @@
@ApiModelProperty(value = "缁忛攢鍟嗕俊鎭�", example = "1")
private Shop shopInfo;
+ @ApiModelProperty(value = "鐢ㄦ埛淇℃伅", example = "1")
+ private Member member;
+
@ApiModelProperty(value = "浼樻儬鍒镐俊鎭�", example = "1")
private MemberCoupon memberCoupon;
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
index e865893..3a7e8ef 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -5,10 +5,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Shop;
-import com.doumee.dao.web.request.OrderCancelRequest;
-import com.doumee.dao.web.request.OrderPayRequest;
-import com.doumee.dao.web.request.PayDetailRequest;
-import com.doumee.dao.web.request.ShopOrderPayRequest;
+import com.doumee.dao.web.request.*;
import com.doumee.dao.web.request.goods.DealOrderRequest;
import com.doumee.dao.web.request.goods.MemberOrderRequest;
import com.doumee.dao.web.request.goods.OrderCommentRequest;
@@ -69,7 +66,7 @@
void orderSendOutGoods(Goodsorder goodsorder);
void orderRemark(Goodsorder goodsorder);
- IPage<Shop> getShopPage(PageWrap<Shop> pageWrap);
+// IPage<Shop> getShopPage(PageWrap<Shop> pageWrap);
void coffeePlanCancelOrder(Goodsorder goodsorder);
void orderPlanCancelOrder(Goodsorder goodsorder);
@@ -228,4 +225,14 @@
OrderPayConfirmResponse orderPayConfirm(OrderPayConfirmRequest request,
MemberCouponServiceImpl memberCouponService);
+
+ /**
+ * 缁忛攢鍟嗚鍗曞垪琛�
+ * @param pageWrap
+ * @return
+ */
+ PageData<Goodsorder> shopOrderPage(PageWrap<ShopOrderRequest> pageWrap);
+
+
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java
index f4dd03b..5986bcf 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java
@@ -4,7 +4,9 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Integral;
import com.doumee.dao.web.dto.IntegralDTO;
+import com.doumee.dao.web.dto.IntegralRecordDTO;
import com.doumee.dao.web.request.DealIntegralRequest;
+import com.doumee.dao.web.response.IntegralDataResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -114,6 +116,7 @@
* @return PageData<Integral>
*/
PageData<IntegralDTO> findIntegralDTOPage(PageWrap<IntegralDTO> pageWrap,Integer memberId);
+
/**
* 鏇存柊娑堣垂鑰呯Н鍒�
* @param dealIntegralRequest 瀹炰綋瀵硅薄
@@ -134,4 +137,20 @@
* @return
*/
Integer dealShopAmount(DealIntegralRequest dealIntegralRequest);
+
+
+ /**
+ * 鑾峰彇鐢ㄦ埛鐨勭Н鍒嗚褰�
+ * @param pageWrap
+ * @return
+ */
+ PageData<Integral> findIntegralRecordPage(PageWrap<IntegralRecordDTO> pageWrap);
+
+ /**
+ * 鑾峰彇鐢ㄦ埛鍓╀綑绉垎涓庡緟鎯呭喌绉垎淇℃伅
+ * @param model
+ * @return
+ */
+ IntegralDataResponse getIntegralData(IntegralRecordDTO model);
}
+
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberBankService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberBankService.java
new file mode 100644
index 0000000..9da0641
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberBankService.java
@@ -0,0 +1,103 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.MemberBank;
+import com.doumee.dao.web.request.MemberBankSaveRequest;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鎻愮幇閾惰淇℃伅Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+public interface MemberBankService {
+
+ /**
+ * 鍒涘缓
+ *
+ * @param memberBank 瀹炰綋瀵硅薄
+ * @return Integer
+ */
+ Integer create(MemberBank memberBank);
+
+ /**
+ * 涓婚敭鍒犻櫎
+ *
+ * @param id 涓婚敭
+ */
+ void deleteById(Integer id);
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param memberBank 瀹炰綋瀵硅薄
+ */
+ void delete(MemberBank memberBank);
+
+ /**
+ * 鎵归噺涓婚敭鍒犻櫎
+ *
+ * @param ids 涓婚敭闆�
+ */
+ void deleteByIdInBatch(List<Integer> ids);
+
+ /**
+ * 涓婚敭鏇存柊
+ *
+ * @param memberBank 瀹炰綋瀵硅薄
+ */
+ void updateById(MemberBank memberBank);
+
+ /**
+ * 鎵归噺涓婚敭鏇存柊
+ *
+ * @param memberBanks 瀹炰綋闆�
+ */
+ void updateByIdInBatch(List<MemberBank> memberBanks);
+
+ /**
+ * 涓婚敭鏌ヨ
+ *
+ * @param id 涓婚敭
+ * @return MemberBank
+ */
+ MemberBank findById(Integer id);
+
+ /**
+ * 鏉′欢鏌ヨ鍗曟潯璁板綍
+ *
+ * @param memberBank 瀹炰綋瀵硅薄
+ * @return MemberBank
+ */
+ MemberBank findOne(MemberBank memberBank);
+
+ /**
+ * 鏉′欢鏌ヨ
+ *
+ * @param memberBank 瀹炰綋瀵硅薄
+ * @return List<MemberBank>
+ */
+ List<MemberBank> findList(MemberBank memberBank);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param pageWrap 鍒嗛〉瀵硅薄
+ * @return PageData<MemberBank>
+ */
+ PageData<MemberBank> findPage(PageWrap<MemberBank> pageWrap);
+
+ /**
+ * 鏉′欢缁熻
+ *
+ * @param memberBank 瀹炰綋瀵硅薄
+ * @return long
+ */
+ long count(MemberBank memberBank);
+
+ void saveOrUpdate(MemberBankSaveRequest request);
+
+ List<MemberBank> getMyBankList(Integer shopId);
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
index cb33f25..6e89bfa 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -137,7 +137,7 @@
* 鑾峰彇缁戝畾寰俊鐢ㄦ埛鎵嬫満鍙�
* @param wxPhoneRequest
*/
- void wxPhone(WxPhoneRequest wxPhoneRequest);
+ AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest);
/**
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
index a1414f0..eea1737 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
@@ -2,13 +2,18 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Shop;
import com.doumee.dao.web.dto.MemberDTO;
import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
-import com.doumee.dao.web.dto.shop.ShopDTO;
-import com.doumee.dao.web.dto.shop.ShopDataStatisticsDTO;
-import com.doumee.dao.web.dto.shop.ShopFaceDetailDTO;
-import com.doumee.dao.web.dto.shop.ShopSimpleDTO;
+import com.doumee.dao.web.dto.ShopLoginDTO;
+import com.doumee.dao.web.dto.shop.*;
+import com.doumee.dao.web.request.MyCustomerRequest;
+import com.doumee.dao.web.request.SaleReportRequest;
+import com.doumee.dao.web.response.AccountResponse;
+import com.doumee.dao.web.response.MyCustomerResponse;
+import com.doumee.dao.web.response.SaleReportResponse;
+import com.doumee.dao.web.response.ShopInfoResponse;
import java.util.List;
@@ -160,6 +165,51 @@
ShopDataStatisticsDTO getShopDataStatisticsDTO(Integer shopId);
void resetPwd(Shop dto);
+ /**
+ * 鐢ㄦ埛涓嬪崟鏌ヨ鍙�夋嫨鐨勮嚜鎻愮粡閿�鍟�
+ * @param dto
+ * @return
+ */
+ List<Shop> getShopList(ShopListDTO dto);
+
+ /**
+ * 缁忛攢鍟嗚处鍙峰瘑鐮佺櫥褰�
+ * @param dto
+ * @return
+ */
+ AccountResponse shopPasswordLogin(ShopLoginDTO dto);
+
+ /**
+ * 缁忛攢鍟嗛潤榛樼櫥褰�
+ * @param dto
+ * @return
+ */
+ AccountResponse shopOpenidLogin(ShopLoginDTO dto);
+
+ /**
+ * 缁忛攢鍟嗗簵閾鸿鎯�
+ * @param shopId
+ * @return
+ */
+ ShopInfoResponse getShopInfo(Integer shopId);
+
+
+ /**
+ * 鎴戠殑瀹㈡埛淇℃伅
+ * @param request
+ * @param shopId
+ * @return
+ */
+ List<MyCustomerResponse> myCustomer(MyCustomerRequest request, Integer shopId);
+
+ /**
+ * 閿�鍞槑缁�
+ * @param request
+ * @param shopId
+ * @return
+ */
+ SaleReportResponse saleReport(SaleReportRequest request, String shopId);
+
String setGoodsPrice(Shop shop);
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/WithdrawRecordService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/WithdrawRecordService.java
new file mode 100644
index 0000000..8069a59
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/WithdrawRecordService.java
@@ -0,0 +1,106 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.WithdrawRecord;
+import com.doumee.dao.web.request.WithdrawApplyRequest;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鎻愮幇璁板綍Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+public interface WithdrawRecordService {
+
+ /**
+ * 鍒涘缓
+ *
+ * @param withdrawRecord 瀹炰綋瀵硅薄
+ * @return Integer
+ */
+ Integer create(WithdrawRecord withdrawRecord);
+
+ /**
+ * 涓婚敭鍒犻櫎
+ *
+ * @param id 涓婚敭
+ */
+ void deleteById(Integer id);
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param withdrawRecord 瀹炰綋瀵硅薄
+ */
+ void delete(WithdrawRecord withdrawRecord);
+
+ /**
+ * 鎵归噺涓婚敭鍒犻櫎
+ *
+ * @param ids 涓婚敭闆�
+ */
+ void deleteByIdInBatch(List<Integer> ids);
+
+ /**
+ * 涓婚敭鏇存柊
+ *
+ * @param withdrawRecord 瀹炰綋瀵硅薄
+ */
+ void updateById(WithdrawRecord withdrawRecord);
+
+ /**
+ * 鎵归噺涓婚敭鏇存柊
+ *
+ * @param withdrawRecords 瀹炰綋闆�
+ */
+ void updateByIdInBatch(List<WithdrawRecord> withdrawRecords);
+
+ /**
+ * 涓婚敭鏌ヨ
+ *
+ * @param id 涓婚敭
+ * @return WithdrawRecord
+ */
+ WithdrawRecord findById(Integer id);
+
+ /**
+ * 鏉′欢鏌ヨ鍗曟潯璁板綍
+ *
+ * @param withdrawRecord 瀹炰綋瀵硅薄
+ * @return WithdrawRecord
+ */
+ WithdrawRecord findOne(WithdrawRecord withdrawRecord);
+
+ /**
+ * 鏉′欢鏌ヨ
+ *
+ * @param withdrawRecord 瀹炰綋瀵硅薄
+ * @return List<WithdrawRecord>
+ */
+ List<WithdrawRecord> findList(WithdrawRecord withdrawRecord);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param pageWrap 鍒嗛〉瀵硅薄
+ * @return PageData<WithdrawRecord>
+ */
+ PageData<WithdrawRecord> findPage(PageWrap<WithdrawRecord> pageWrap);
+
+ /**
+ * 鏉′欢缁熻
+ *
+ * @param withdrawRecord 瀹炰綋瀵硅薄
+ * @return long
+ */
+ long count(WithdrawRecord withdrawRecord);
+
+ /**
+ * 鎻愮幇鐢宠
+ * @param request
+ * @param integralService
+ */
+ void withdrawApply(WithdrawApplyRequest request, IntegralService integralService);
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 4611954..a8a17a7 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -194,7 +194,7 @@
goodsorderMapper.updateById(goodsorder);
}
- @Override
+ /*@Override
public IPage<Shop> getShopPage(PageWrap<Shop> pageWrap) {
IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
Shop model = pageWrap.getModel();
@@ -213,7 +213,7 @@
.like(StringUtils.isNotBlank(model.getName()),Shop::getName,model.getName())
.orderByAsc(" distance ")
);
- }
+ }*/
/**
@@ -770,6 +770,7 @@
goodsorder.setDistributionShopId(shop.getId());
if(Objects.isNull(member.getBindShopId())){
member.setBindShopId(shop.getId());
+ member.setBindShopDate(new Date());
}
}
@@ -1056,6 +1057,14 @@
if(Constants.equalsInteger(memberOrderResponse.getReceiveType(),Constants.ONE)){
memberOrderResponse.setShopInfo(shopMapper.selectById(memberOrderResponse.getShopId()));
}
+ Member member = memberMapper.selectById(memberOrderResponse.getMemberId());
+ if(Objects.nonNull(member)){
+ String memberfullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode();
+ member.setImgFullUrl(memberfullUrl + member.getImgurl());
+ memberOrderResponse.setMember(member);
+ }
+
return memberOrderResponse;
}
@@ -1786,10 +1795,12 @@
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.GOODSORDER_KEY,0);
//鍔犲叆redis缂撳瓨锛屽埛鏂颁粖澶╁敭鍚庣紪鍙�0寮�濮�
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,0);
+ //鍔犲叆redis缂撳瓨锛屽埛鏂颁粖澶╁敭鍚庣紪鍙�0寮�濮�
+ RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,0);
}
@Override
public void refreshOrderCodes(){
- long countOrder = 0,countSign=0,countSale=0;
+ long countOrder = 0,countSign=0,countSale=0,countWithdraw=0;
QueryWrapper<Goodsorder> order = new QueryWrapper<>();
order.apply(true, "TO_DAYS(NOW())=TO_DAYS(create_date)");
@@ -1818,6 +1829,22 @@
}
//鍔犲叆redis缂撳瓨锛屽埛鏂颁粖澶╁敭鍚庣紪鍙�0寮�濮�
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,countSale);
+
+
+
+ QueryWrapper<WithdrawRecord> withdraw = new QueryWrapper<>();
+ withdraw.apply(true, "TO_DAYS(NOW())=TO_DAYS(create_date)");
+ withdraw.orderByDesc(" CODE ");
+ withdraw.last(" limit 1 ");
+ Aftersale maxWithdrawOrder = aftersaleMapper.selectOne(sale);
+ if(!Objects.isNull(maxWithdrawOrder)){
+ countWithdraw = Integer.valueOf(maxOrder.getCode().toString().substring(8,12));
+ }
+ //鍔犲叆redis缂撳瓨锛屽埛鏂颁粖澶╁敭鍚庣紪鍙�0寮�濮�
+ RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,countWithdraw);
+
+
+
}
@@ -1899,11 +1926,13 @@
.eq(Goodsorder::getMemberId,member.getId())
.eq(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey()))
);
+
homeInfoResponse.setWaitPayNum(
goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getIsdeleted,Constants.ZERO)
.eq(Goodsorder::getMemberId,member.getId())
.eq(Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey()))
);
+
homeInfoResponse.setCartTypeNum(
shopcartMapper.selectCount(new QueryWrapper<Shopcart>().lambda()
.eq(Shopcart::getIsdeleted,Constants.ZERO)
@@ -1925,11 +1954,44 @@
);
return homeInfoResponse;
-
-
}
+ @Override
+ public PageData<Goodsorder> shopOrderPage(PageWrap<ShopOrderRequest> pageWrap) {
+ Integer shopId = null;
+ Integer status = null;
+ IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ ShopOrderRequest model = pageWrap.getModel();
+ queryWrapper.selectAll(Goodsorder.class);
+// queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName);
+// queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone);
+// queryWrapper.selectAs(Member::getImgurl,Goodsorder::getImgurl);
+ queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
+ queryWrapper.eq(Objects.nonNull(model.getStatus()),Goodsorder::getStatus,model.getStatus());
+ queryWrapper.eq(Objects.nonNull(model.getShopId()),Goodsorder::getDistributionShopId,model.getShopId());
+ queryWrapper.orderByDesc(Goodsorder::getCreateDate);
+
+ IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
+
+ String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() +
+ systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
+
+ for(Goodsorder goodsorder:result.getRecords()){
+
+ List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
+ .eq(GoodsorderDetail::getOrderId,goodsorder.getId()));
+ goodsorderDetailList.stream().forEach(s ->{
+ if(StringUtils.isBlank(s.getImgurl())){
+ s.setImgurl(path + s.getGoodsImgurl());
+ }
+ });
+ goodsorder.setGoodsorderDetailList(goodsorderDetailList);
+ }
+ return PageData.from(result);
+ }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
index 16cf274..7838eb0 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -16,8 +16,11 @@
import com.doumee.dao.business.model.Integral;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.web.dto.IntegralDTO;
+import com.doumee.dao.web.dto.IntegralRecordDTO;
import com.doumee.dao.web.request.DealIntegralRequest;
+import com.doumee.dao.web.response.IntegralDataResponse;
import com.doumee.service.business.AreasService;
import com.doumee.service.business.IntegralService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -385,4 +388,87 @@
integralDTOIPage.setCurrent(result.getCurrent());
return PageData.from(integralDTOIPage);
}
+
+
+
+ public List<Integral> getMyIntegralList(Integer memberId) {
+
+
+
+ QueryWrapper<Integral> queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().eq(Integral::getMemberId,memberId);
+ return integralMapper.selectList(queryWrapper);
+ }
+
+ @Override
+ public PageData<Integral> findIntegralRecordPage(PageWrap<IntegralRecordDTO> pageWrap) {
+ IPage<Integral> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ Utils.MP.blankToNull(pageWrap.getModel());
+ IntegralRecordDTO model = pageWrap.getModel();
+
+ IPage<Integral> result = integralMapper.selectPage(page,new QueryWrapper<Integral>()
+ .lambda()
+ .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
+ .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+ .eq(Integral::getMemberId,model.getMemberId())
+ .orderByDesc(Integral::getCreateDate)
+ );
+
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(result.getRecords())){
+ for (Integral integral:result.getRecords()) {
+ integral.setStrType(Constants.IntegralObjType.getName(integral.getObjType()));
+ }
+ }
+ return PageData.from(result);
+ }
+
+
+ @Override
+ public IntegralDataResponse getIntegralData(IntegralRecordDTO model){
+ IntegralDataResponse integralDataResponse = new IntegralDataResponse();
+ integralDataResponse.setSurplusIntegral(BigDecimal.ZERO);
+ integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
+ List<Integral> list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
+ .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+ .eq(Integral::getMemberId,model.getMemberId())
+ .orderByDesc(Integral::getCreateDate));
+
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
+ integralDataResponse.setSurplusIntegral(
+ list.stream().map(i->i.getNum().multiply(new BigDecimal(i.getType().toString()))
+ ).reduce(BigDecimal.ZERO, BigDecimal::add)
+ );
+
+ //绉垎澶辨晥鏂瑰紡 0闀挎湡鏈夋晥 1鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
+ Integer type = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
+ //娑堣垂鑰呯Н鍒� 闇�瑕佹煡璇㈠嵆灏嗚繃鏈熺Н鍒�
+ if(Constants.equalsInteger(type,Constants.ZERO)){
+ Integer validYear = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
+ if(validYear.compareTo(Constants.ZERO)>Constants.ZERO){
+ list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
+ .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+ .eq(Integral::getMemberId,model.getMemberId())
+ .apply(" CREATE_DATE >= DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL "+(validYear*12)+1+" MONTH) ")
+ .orderByDesc(Integral::getCreateDate));
+ BigDecimal newIntegral = list.stream().map(i->i.getNum().multiply(new BigDecimal(i.getType().toString()))
+ ).reduce(BigDecimal.ZERO, BigDecimal::add);
+ integralDataResponse.setExpiredIntegral(
+ integralDataResponse.getSurplusIntegral().compareTo(newIntegral)>Constants.ZERO?integralDataResponse.getSurplusIntegral().subtract(newIntegral):BigDecimal.ZERO
+ );
+ }
+ }
+
+ }
+ String info = systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALRULEINFO).getCode();
+ integralDataResponse.setInfo(info);
+
+ return integralDataResponse;
+ }
+
+
+
+
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberBankServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberBankServiceImpl.java
new file mode 100644
index 0000000..0294cd1
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberBankServiceImpl.java
@@ -0,0 +1,207 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.MemberBankMapper;
+import com.doumee.dao.business.model.MemberBank;
+import com.doumee.dao.web.request.MemberBankSaveRequest;
+import com.doumee.service.business.MemberBankService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鐢ㄦ埛鎻愮幇閾惰淇℃伅Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Service
+public class MemberBankServiceImpl implements MemberBankService {
+
+ @Autowired
+ private MemberBankMapper memberBankMapper;
+
+ @Override
+ public Integer create(MemberBank memberBank) {
+ memberBankMapper.insert(memberBank);
+ return memberBank.getId();
+ }
+
+ @Override
+ public void deleteById(Integer id) {
+ memberBankMapper.deleteById(id);
+ }
+
+ @Override
+ public void delete(MemberBank memberBank) {
+ UpdateWrapper<MemberBank> deleteWrapper = new UpdateWrapper<>(memberBank);
+ memberBankMapper.delete(deleteWrapper);
+ }
+
+ @Override
+ public void deleteByIdInBatch(List<Integer> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ memberBankMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void updateById(MemberBank memberBank) {
+ memberBankMapper.updateById(memberBank);
+ }
+
+ @Override
+ public void updateByIdInBatch(List<MemberBank> memberBanks) {
+ if (CollectionUtils.isEmpty(memberBanks)) {
+ return;
+ }
+ for (MemberBank memberBank: memberBanks) {
+ this.updateById(memberBank);
+ }
+ }
+
+ @Override
+ public MemberBank findById(Integer id) {
+ return memberBankMapper.selectById(id);
+ }
+
+ @Override
+ public MemberBank findOne(MemberBank memberBank) {
+ QueryWrapper<MemberBank> wrapper = new QueryWrapper<>(memberBank);
+ return memberBankMapper.selectOne(wrapper);
+ }
+
+ @Override
+ public List<MemberBank> findList(MemberBank memberBank) {
+ QueryWrapper<MemberBank> wrapper = new QueryWrapper<>(memberBank);
+ return memberBankMapper.selectList(wrapper);
+ }
+
+ @Override
+ public PageData<MemberBank> findPage(PageWrap<MemberBank> pageWrap) {
+ IPage<MemberBank> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ QueryWrapper<MemberBank> queryWrapper = new QueryWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ if (pageWrap.getModel().getId() != null) {
+ queryWrapper.lambda().eq(MemberBank::getId, pageWrap.getModel().getId());
+ }
+ if (pageWrap.getModel().getCreator() != null) {
+ queryWrapper.lambda().eq(MemberBank::getCreator, pageWrap.getModel().getCreator());
+ }
+ if (pageWrap.getModel().getCreateDate() != null) {
+ queryWrapper.lambda().ge(MemberBank::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+ queryWrapper.lambda().le(MemberBank::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+ }
+ if (pageWrap.getModel().getEditor() != null) {
+ queryWrapper.lambda().eq(MemberBank::getEditor, pageWrap.getModel().getEditor());
+ }
+ if (pageWrap.getModel().getEditDate() != null) {
+ queryWrapper.lambda().ge(MemberBank::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+ queryWrapper.lambda().le(MemberBank::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+ }
+ if (pageWrap.getModel().getIsdeleted() != null) {
+ queryWrapper.lambda().eq(MemberBank::getIsdeleted, pageWrap.getModel().getIsdeleted());
+ }
+ if (pageWrap.getModel().getRemark() != null) {
+ queryWrapper.lambda().eq(MemberBank::getRemark, pageWrap.getModel().getRemark());
+ }
+ if (pageWrap.getModel().getBankName() != null) {
+ queryWrapper.lambda().eq(MemberBank::getBankName, pageWrap.getModel().getBankName());
+ }
+ if (pageWrap.getModel().getBankAccount() != null) {
+ queryWrapper.lambda().eq(MemberBank::getBankAccount, pageWrap.getModel().getBankAccount());
+ }
+ if (pageWrap.getModel().getName() != null) {
+ queryWrapper.lambda().eq(MemberBank::getName, pageWrap.getModel().getName());
+ }
+ if (pageWrap.getModel().getMemberId() != null) {
+ queryWrapper.lambda().eq(MemberBank::getMemberId, pageWrap.getModel().getMemberId());
+ }
+ if (pageWrap.getModel().getIsDefault() != null) {
+ queryWrapper.lambda().eq(MemberBank::getIsDefault, pageWrap.getModel().getIsDefault());
+ }
+ for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+ if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+ queryWrapper.orderByDesc(sortData.getProperty());
+ } else {
+ queryWrapper.orderByAsc(sortData.getProperty());
+ }
+ }
+ return PageData.from(memberBankMapper.selectPage(page, queryWrapper));
+ }
+
+ @Override
+ public long count(MemberBank memberBank) {
+ QueryWrapper<MemberBank> wrapper = new QueryWrapper<>(memberBank);
+ return memberBankMapper.selectCount(wrapper);
+ }
+
+ @Override
+ public void saveOrUpdate(MemberBankSaveRequest request) {
+ if(Objects.isNull(request)
+ ||Objects.isNull(request.getIsDefault())
+ ||Objects.isNull(request.getMemberId())
+ || StringUtils.isNotBlank(request.getBankName())
+ || StringUtils.isNotBlank(request.getBankAccount())
+ || StringUtils.isNotBlank(request.getName())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ if (request.getIsDefault() == 1) {
+ List<MemberBank> memberBanks = memberBankMapper.selectList(new QueryWrapper<MemberBank>().lambda()
+ .eq(MemberBank::getMemberId, request.getMemberId())
+ .eq(MemberBank::getIsDefault, Constants.ONE));
+ for (MemberBank memberBank: memberBanks) {
+ memberBank.setIsDefault(Constants.ZERO);
+ this.updateById(memberBank);
+ }
+ }
+ if (request.getId() == null) {
+ MemberBank memberBank = new MemberBank();
+ BeanUtils.copyProperties(request,memberBank);
+ memberBank.setCreateDate(new Date());
+ memberBank.setEditDate(new Date());
+ memberBankMapper.insert(memberBank);
+ } else {
+ MemberBank memberBank = memberBankMapper.selectById(request.getId());
+ if(Objects.isNull(memberBank)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ BeanUtils.copyProperties(request,memberBank);
+ memberBank.setEditDate(new Date());
+ this.updateById(memberBank);
+ }
+ }
+
+
+ @Override
+ public List<MemberBank> getMyBankList(Integer shopId) {
+ List<MemberBank> memberBanks = memberBankMapper.selectList(new QueryWrapper<MemberBank>()
+ .lambda()
+ .eq(MemberBank::getIsdeleted, Constants.ZERO)
+ .eq(MemberBank::getMemberId,shopId)
+ .orderByDesc(MemberBank::getIsDefault,MemberBank::getId)
+ );
+ return memberBanks;
+ }
+
+
+
+
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index f2b1bdb..f146ea2 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -657,11 +657,6 @@
}
-
-
-
-
-
/**
* 璁$畻褰撳墠宸查�夋嫨浼樻儬鍒告瘡涓晢鍝佸崰姣旈噾棰�
* @param coupon 浼樻儬鍒镐俊鎭�
@@ -718,6 +713,9 @@
response.setUseCoupon(idList.contains(Constants.equalsInteger(vaildType,Constants.ZERO)?response.getId().toString():response.getCategoryId().toString())?true:false);
}
}
+
+
+
// public Set<Integer> isVaildUse(List<String> idList,List<OrderGoodsCalculateResponse> goodsList,Integer vaildType){
// List<OrderGoodsCalculateResponse> resultList = new ArrayList<>();
// for (String id:idList) {
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 017cbe5..0ee1f97 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -20,6 +20,9 @@
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.dao.business.*;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.ShopMapper;
+import com.doumee.dao.business.SmsrecordMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
@@ -40,6 +43,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
+import io.swagger.util.Yaml;
import lombok.extern.log4j.Log4j;
import me.chanjar.weixin.common.error.WxErrorException;
import okhttp3.OkHttpClient;
@@ -79,6 +84,7 @@
private ShopMapper shopMapper;
@Autowired
private UserActionMapper userActionMapper;
+
@Autowired
private SmsrecordMapper smsrecordMapper;
@@ -348,38 +354,38 @@
if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
}
- Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPEN_ID", openId));
- if (member == null) {
- member = new Member();
- member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
- member.setNickname("寰俊瀹㈡埛"+ CodeVerifyUtils.createVerificationCode(4));
- member.setCreateDate(new Date());
- member.setIsdeleted(Constants.ZERO);
- member.setType(Constants.ZERO);
- member.setOrigin(Constants.ZERO);
- member.setRecId(recId);
- member.setOpenId(openId);
- memberMapper.insert(member);
- }
- member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
- systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .last(" limit 1"));
//鍒涘缓token
- JwtPayLoad payLoad = new JwtPayLoad(member.getId());
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
String token = JwtTokenUtil.generateToken(payLoad);
AccountResponse accountResponse = new AccountResponse();
- accountResponse.setToken(token);
accountResponse.setSessionKey(session.getSessionKey());
- accountResponse.setMember(member);
+ if(Objects.nonNull(member)){
+ if(Objects.isNull(member.getRecId())){
+ member.setRecId(recId);
+ }
+ memberMapper.updateById(member);
+ member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
+ accountResponse.setToken(token);
+ accountResponse.setMember(member);
+ }else{
+ accountResponse.setOpenid(openId);
+ }
return accountResponse;
} catch (WxErrorException e) {
e.printStackTrace();
}
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
}
+
+
@Override
public AccountResponse wxLoginTest( Integer memberId){
//鍒涘缓token
- JwtPayLoad payLoad = new JwtPayLoad(memberId);
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
String token = JwtTokenUtil.generateToken(payLoad);
AccountResponse accountResponse = new AccountResponse();
accountResponse.setToken(token);
@@ -387,9 +393,82 @@
}
+ /**
+ * 鏍规嵁openid鑾峰彇鏄惁缁戝畾浜嗗晢鎴�
+ * @param openid
+ * @param memberId
+ * @return
+ */
+ public AccountResponse shopOpenidLogin(String openid, Integer memberId){
+ Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getOpenId, openid)
+ .eq(Shop::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setOpenid(openid);
+ if(Objects.nonNull(shop)){
+ if(Objects.isNull(memberId)
+ && ( Objects.isNull(shop.getMemberId())
+ || !Constants.equalsInteger(shop.getMemberId(),memberId))){
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getMemberId,memberId)
+ .eq(Shop::getId,shop.getId())
+ );
+ }
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ accountResponse.setToken(token);
+ }
+ return accountResponse;
+ }
+
+
+ /**
+ * 鍟嗘埛璐﹀彿瀵嗙爜鐧诲綍
+ * @param userName
+ * @param password
+ * @param openid
+ * @param memberId
+ * @return
+ */
+ public AccountResponse shopPasswordLogin(String userName,String password,String openid,String memberId){
+ if(StringUtils.isBlank(userName)
+ || StringUtils.isBlank(password)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
+ }
+ Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getUsername, userName)
+ .eq(Shop::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ if(shop==null){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍔犲瘑瀵嗙爜
+ String pwd = Utils.Secure.encryptPassword(password, shop.getSalt());
+ if(!pwd.equals(shop.getPassword())){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍒涘缓token
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(token);
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getOpenId,openid)
+ .set(Shop::getMemberId,memberId)
+ .eq(Shop::getId,shop.getId())
+ );
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getOpenId,null)
+ .eq(Shop::getOpenId,openid)
+ .ne(Shop::getId,shop.getId())
+ );
+ return accountResponse;
+ }
+
@Override
- public void wxPhone(WxPhoneRequest wxPhoneRequest){
+ public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
try {
WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(
wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv());
@@ -398,46 +477,79 @@
if(Objects.isNull(phone)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈幏鍙栧埌鎵嬫満鍙�");
}
- Member member = memberMapper.selectById(wxPhoneRequest.getMemberId());
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, wxPhoneRequest.getOpenid())
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .last(" limit 1"));
+ if (member == null) {
+ member = new Member();
+ member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
+ member.setNickname("寰俊鐢ㄦ埛"+ CodeVerifyUtils.createVerificationCode(4));
+ member.setCreateDate(new Date());
+ member.setIsdeleted(Constants.ZERO);
+ member.setType(Constants.ZERO);
+ member.setOrigin(Constants.ZERO);
+ member.setRecId(wxPhoneRequest.getRecId());
+ member.setOpenId(wxPhoneRequest.getOpenid());
+ }
member.setPhone(phone);
member.setEditDate(new Date());
- member.setEditor(wxPhoneRequest.getMemberId());
member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
- //鐢熸垚鍒嗕韩鐮�
- String accessToken = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ACCESS_TOKEN).getCode();
- if(StringUtils.isBlank(member.getSharingCode())){
- //鐢熸垚鍥剧墖涓婁紶OSS
- Map<String,Object> body = new HashMap<>();
- // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
- body.put("scene", member.getId());
- // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
- body.put("env_version", "release");
- // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
- body.put("is_hyaline", true);
- OkHttpClient client = new OkHttpClient().newBuilder().build();
- okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
- okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
- Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
- .method("POST", requestBody).build();
- try {
- Response response = client.newCall(request).execute();
- if (response.isSuccessful()) {
- InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
- FileModel fileModel = uploadFileService.uploadWxCode(inputStream,member.getId().toString());
- member.setSharingCode(fileModel.getFileUrl());
- inputStream.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
+ if(Objects.isNull(member.getId())){
+ memberMapper.insert(member);
+ member.setSharingCode(this.createShareCode(member.getId()));
+ memberMapper.updateById(member);
+ }else{
+ if(StringUtils.isBlank(member.getSharingCode())){
+ member.setSharingCode(this.createShareCode(member.getId()));
}
+ memberMapper.updateById(member);
}
- memberMapper.updateById(member);
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(token);
+ accountResponse.setMember(member);
+ return accountResponse;
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏇存柊鎵嬫満鍙峰け璐�");
}
}
+
+
+
+ public String createShareCode(Integer memberId){
+ //鐢熸垚鍒嗕韩鐮�
+ String accessToken = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ACCESS_TOKEN).getCode();
+ //鐢熸垚鍥剧墖涓婁紶OSS
+ Map<String,Object> body = new HashMap<>();
+ // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
+ body.put("scene", memberId);
+ // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
+ body.put("env_version", "release");
+ // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
+ body.put("is_hyaline", true);
+ OkHttpClient client = new OkHttpClient().newBuilder().build();
+ okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
+ okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
+ Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
+ .method("POST", requestBody).build();
+ try {
+ Response response = client.newCall(request).execute();
+ if (response.isSuccessful()) {
+ InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
+ FileModel fileModel = uploadFileService.uploadWxCode(inputStream,memberId.toString());
+ inputStream.close();
+ return fileModel.getFileUrl();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
@Override
public Member updateMember(UpdateMemberRequest updateMemberRequest){
@@ -678,4 +790,13 @@
Integer integer = integralService.dealIntegral(dealIntegralRequest);
return integer;
}
+
+
+
+
+
+
+
+
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index 28eff80..ee8f7e8 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.Jwt.JwtPayLoad;
+import com.doumee.config.Jwt.JwtTokenUtil;
import com.doumee.config.listener.event.VisitEvent;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.constants.ResponseStatus;
@@ -11,6 +13,9 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
+import com.doumee.dao.business.join.GoodsorderJoinMapper;
+import com.doumee.dao.business.join.MemberJoinMapper;
+import com.doumee.dao.business.*;
import com.doumee.dao.business.join.ProductLabelJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.model.Labels;
@@ -19,11 +24,11 @@
import com.doumee.dao.business.model.ShopScan;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
-import com.doumee.dao.web.dto.CouponDTO;
-import com.doumee.dao.web.dto.MemberDTO;
-import com.doumee.dao.web.dto.MultiFileDTO;
-import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
+import com.doumee.dao.web.dto.*;
import com.doumee.dao.web.dto.shop.*;
+import com.doumee.dao.web.request.MyCustomerRequest;
+import com.doumee.dao.web.request.SaleReportRequest;
+import com.doumee.dao.web.response.*;
import com.doumee.service.business.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -34,6 +39,7 @@
import org.apache.shiro.SecurityUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
+import org.apache.xpath.operations.Bool;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -88,10 +94,13 @@
private SystemDictDataBiz systemDictDataBiz;
@Autowired
- private MemberMapper memberMapper;
+ private MemberJoinMapper memberJoinMapper;
@Autowired
private SystemUserMapper systemUserMapper;
+
+ @Autowired
+ private GoodsorderJoinMapper goodsorderJoinMapper;
@Autowired
private ProductLabelJoinMapper productLabelJoinMapper;
@@ -112,6 +121,9 @@
@Autowired
private MultifileService multifileService;
+
+ @Autowired
+ private IntegralMapper integralMapper;
@Override
@@ -596,6 +608,244 @@
updateUserDto.setPassword(Utils.Secure.encryptPassword( shop.getCode()+"@123456", shop.getSalt()));
shopMapper.updateById(updateUserDto);
}
+
+
+ /**
+ * 鐢ㄦ埛涓嬪崟鏌ヨ鍙�夋嫨鐨勮嚜鎻愮粡閿�鍟�
+ * @param dto
+ * @return
+ */
+ @Override
+ public List<Shop> getShopList(ShopListDTO dto){
+ Boolean isArea = false;
+ if(Objects.nonNull(dto)&&StringUtils.isNotBlank(dto.getLat())
+ && StringUtils.isNotBlank(dto.getLgt())){
+ isArea = true;
+ }
+
+ List<Shop> shopList = shopJoinMapper.selectList(new MPJLambdaWrapper<Shop>()
+ .selectAll(Shop.class)
+ .select(" CONVERT( ST_Distance_Sphere ( POINT ( LONGITUDE, LATITUDE ), POINT ( "+dto.getLgt()+", "+dto.getLat()+" )) /1000,DECIMAL(15,2))",Shop::getDistance)
+ .leftJoin(Areas.class,Areas::getId,Shop::getAreaId)
+ .eq(Objects.nonNull(dto.getCityId()),Areas::getParentId,dto.getCityId())
+ .like(Objects.nonNull(dto.getShopName()),Shop::getName,dto.getShopName())
+ .orderByDesc(!isArea,Shop::getId)
+ .orderByAsc(isArea,Shop::getDistance)
+ );
+ String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+ + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
+ for(Shop model:shopList){
+ model.setImgFullUrl(path+model.getImgurl());
+
+ }
+ return shopList;
+ }
+
+
+
+ /**
+ * 鏍规嵁openid鑾峰彇鏄惁缁戝畾浜嗗晢鎴�
+ * @param dto
+ * @return
+ */
+ @Override
+ public AccountResponse shopOpenidLogin(ShopLoginDTO dto){
+ Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getOpenId, dto.getOpenid())
+ .eq(Shop::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setOpenid(dto.getOpenid());
+ if(Objects.nonNull(shop)){
+ if(Objects.isNull(dto.getMemberId())
+ && ( Objects.isNull(shop.getMemberId())
+ || !Constants.equalsInteger(shop.getMemberId(),dto.getMemberId()))){
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getMemberId,dto.getMemberId())
+ .eq(Shop::getId,shop.getId())
+ );
+ }
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ accountResponse.setToken(token);
+ }
+ return accountResponse;
+ }
+
+
+ /**
+ * 鍟嗘埛璐﹀彿瀵嗙爜鐧诲綍
+ * @param dto
+ * @return
+ */
+ @Override
+ public AccountResponse shopPasswordLogin(ShopLoginDTO dto){
+ if(StringUtils.isBlank(dto.getUserName())
+ || StringUtils.isBlank(dto.getPassword())
+ || StringUtils.isBlank(dto.getOpenid())
+ ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
+ }
+ Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getUsername, dto.getUserName())
+ .eq(Shop::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ if(shop==null){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍔犲瘑瀵嗙爜
+ String pwd = Utils.Secure.encryptPassword( dto.getPassword(), shop.getSalt());
+ if(!pwd.equals(shop.getPassword())){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍒涘缓token
+ JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+ String token = JwtTokenUtil.generateToken(payLoad);
+ AccountResponse accountResponse = new AccountResponse();
+ accountResponse.setToken(token);
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getOpenId,dto.getOpenid())
+ .set(Shop::getMemberId,dto.getMemberId())
+ .eq(Shop::getId,shop.getId())
+ );
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .set(Shop::getOpenId,null)
+ .eq(Shop::getOpenId,dto.getOpenid())
+ .ne(Shop::getId,shop.getId())
+ );
+ return accountResponse;
+ }
+
+
+
+
+ @Override
+ public ShopInfoResponse getShopInfo(Integer shopId){
+ ShopInfoResponse response = new ShopInfoResponse();
+ Shop shop = shopMapper.selectById(shopId);
+ if(Objects.isNull(shop)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+ + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
+ BeanUtils.copyProperties(shop,response);
+ response.setImgurl(path + shop.getImgurl());
+ response.setIdcardImg(path + shop.getIdcardImg());
+ response.setIdcardImgBack(path + shop.getIdcardImgBack());
+ response.setBusinessImg(path + shop.getBusinessImg());
+
+ return response;
+ }
+
+
+ @Override
+ public List<MyCustomerResponse> myCustomer(MyCustomerRequest request, Integer shopId){
+ List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,
+ new MPJLambdaWrapper<Member>()
+ .selectAll(Member.class)
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .eq(Member::getBindShopId,shopId)
+ .and(StringUtils.isNotBlank(request.getMemberIfo()),i->i.like(Member::getPhone,request.getMemberIfo()).or().like(Member::getNickname,request.getMemberIfo()))
+ );
+ List<MyCustomerResponse> responseList = new ArrayList<>();
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){
+ String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+ + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
+ memberList.forEach(member -> {
+ MyCustomerResponse response = new MyCustomerResponse();
+ response.setNickName(member.getNickname());
+ response.setPhone(member.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"));
+ response.setBindShopDate(member.getBindShopDate());
+ response.setImgFullUrl(StringUtils.isNotBlank(member.getImgurl())?path + member.getImgurl():"");
+ responseList.add(response);
+ });
+ }
+ return responseList;
+ }
+
+
+
+ @Override
+ public SaleReportResponse saleReport(SaleReportRequest request,String shopId){
+ SaleReportResponse saleReportResponse = new SaleReportResponse();
+ saleReportResponse.setSaleTotal(BigDecimal.ZERO);
+ saleReportResponse.setOrderNum(Constants.ZERO);
+ saleReportResponse.setProfitTotal(BigDecimal.ZERO);
+
+ List<Goodsorder> goodsorderList = goodsorderJoinMapper.selectJoinList(Goodsorder.class,
+ new MPJLambdaWrapper<Goodsorder>()
+ .selectAll(Goodsorder.class)
+ .selectAs(Member::getPhone,Goodsorder::getPhone)
+ .selectAs(Member::getNickname,Goodsorder::getNickName)
+ .select(" select ifnull(sum(g.SHOP_SETTLEMENT),0) from goodsorder_detail g where t.id = g.ORDER_ID ",Goodsorder::getShopSettlement)
+ .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId)
+ .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+ .eq(Goodsorder::getDistributionShopId,shopId)
+ //浠婃棩
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(t.CREATE_DATE) = DATE(NOW()) ")
+ //褰撴湀
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
+ //涓婃湀
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), " DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
+ //鍥哄畾鏈堜唤
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
+ //鑷畾涔夋棩鏈�
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), " t.CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), " t.CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
+ .ne(Goodsorder::getStatus,Constants.OrderStatus.CLOSE.getKey())
+ .orderByDesc(Goodsorder::getId)
+ );
+ if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(goodsorderList)) {
+ saleReportResponse.setSaleTotal(goodsorderList.stream().map(i->i.getPrice().subtract(i.getMailPrice())).reduce(BigDecimal.ZERO, BigDecimal::add));
+ saleReportResponse.setOrderNum(goodsorderList.size());
+ if(Constants.equalsInteger(request.getQueryType(),Constants.ONE)){
+ List<SaleReportOrderResponse> list = new ArrayList<>();
+ goodsorderList.stream().forEach(goodsorder -> {
+ SaleReportOrderResponse response = new SaleReportOrderResponse();
+ response.setId(goodsorder.getId());
+ response.setCode(goodsorder.getCode());
+ response.setPrice(goodsorder.getPrice());
+ response.setMailPrice(goodsorder.getMailPrice());
+ response.setCreateDate(goodsorder.getCreateDate());
+ response.setNickName(goodsorder.getNickName());
+ response.setPhone(goodsorder.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
+ response.setShopSettlement(goodsorder.getShopSettlement());
+ list.add(response);
+ });
+
+ saleReportResponse.setSaleReportOrderResponseList(list);
+ }
+ }
+ List<Integral> integralList = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getIsdeleted,Constants.ZERO)
+ .eq(Integral::getMemberId,shopId)
+ .eq(Integral::getUserType,Constants.TWO)
+ .eq(Integral::getType,Constants.ZERO)
+ .eq(Integral::getObjType,Constants.IntegralObjType.ORDER_DONE_AMOUNT.getKey())
+ //浠婃棩
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(CREATE_DATE) = DATE(NOW()) ")
+ //褰撴湀
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
+ //涓婃湀
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
+ //鍥哄畾鏈堜唤
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
+ //鑷畾涔夋棩鏈�
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), " CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
+ .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), " CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
+ );
+ if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(integralList)) {
+ saleReportResponse.setProfitTotal(integralList.stream().map(i->i.getNum()).reduce(BigDecimal.ZERO, BigDecimal::add));
+ }
+ return saleReportResponse;
+ }
+
+
+
+
+
+
+
@Override
@Transactional
public String setGoodsPrice(Shop dto){
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java
new file mode 100644
index 0000000..58e153e
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java
@@ -0,0 +1,274 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.RedisUtil;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.web.dto.MultiFileDTO;
+import com.doumee.dao.web.request.DealIntegralRequest;
+import com.doumee.dao.web.request.WithdrawApplyRequest;
+import com.doumee.service.business.IntegralService;
+import com.doumee.service.business.WithdrawRecordService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.bouncycastle.cert.dane.DANEEntry;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鐢ㄦ埛鎻愮幇璁板綍Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2026/01/16 11:50
+ */
+@Service
+public class WithdrawRecordServiceImpl implements WithdrawRecordService {
+
+ @Autowired
+ private WithdrawRecordMapper withdrawRecordMapper;
+
+ @Autowired
+ private ShopMapper shopMapper;
+
+ @Autowired
+ private IntegralMapper integralMapper;
+
+ @Autowired
+ private MemberBankMapper memberBankMapper;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
+ @Autowired
+ private MultifileMapper multifileMapper;
+
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
+
+ @Override
+ public Integer create(WithdrawRecord withdrawRecord) {
+ withdrawRecordMapper.insert(withdrawRecord);
+ return withdrawRecord.getId();
+ }
+
+ @Override
+ public void deleteById(Integer id) {
+ withdrawRecordMapper.deleteById(id);
+ }
+
+ @Override
+ public void delete(WithdrawRecord withdrawRecord) {
+ UpdateWrapper<WithdrawRecord> deleteWrapper = new UpdateWrapper<>(withdrawRecord);
+ withdrawRecordMapper.delete(deleteWrapper);
+ }
+
+ @Override
+ public void deleteByIdInBatch(List<Integer> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ withdrawRecordMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void updateById(WithdrawRecord withdrawRecord) {
+ withdrawRecordMapper.updateById(withdrawRecord);
+ }
+
+ @Override
+ public void updateByIdInBatch(List<WithdrawRecord> withdrawRecords) {
+ if (CollectionUtils.isEmpty(withdrawRecords)) {
+ return;
+ }
+ for (WithdrawRecord withdrawRecord: withdrawRecords) {
+ this.updateById(withdrawRecord);
+ }
+ }
+
+ @Override
+ public WithdrawRecord findById(Integer id) {
+ WithdrawRecord withdrawRecord = withdrawRecordMapper.selectById(id);
+ if (Objects.isNull(withdrawRecord)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ MemberBank memberBank = memberBankMapper.selectById(withdrawRecord.getBankId());
+ if(Objects.nonNull(memberBank)){
+ withdrawRecord.setBankName(memberBank.getBankName());
+ }
+ if(!Constants.equalsInteger(withdrawRecord.getStatus(), Constants.ZERO)){
+ String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() +
+ systemDictDataBiz.queryByCode(Constants.OSS, Constants.TRANSFER_FILE).getCode();
+ Multifile queryfile = new Multifile();
+ queryfile.setObjId(withdrawRecord.getId());
+ queryfile.setObjType( Constants.MultiFile.TRANSFER_FILE.getKey());
+ queryfile.setIsdeleted(Constants.ZERO);
+ List<Multifile> filelist = multifileMapper.selectList(new QueryWrapper<>(queryfile));
+ if(filelist !=null && filelist.size()>0){
+ for (Multifile multifile:filelist) {
+ multifile.setFileFullUrl(path + multifile.getFileurl());
+ }
+ withdrawRecord.setPayFileList(filelist);
+ }
+ }
+ return withdrawRecord;
+ }
+
+ @Override
+ public WithdrawRecord findOne(WithdrawRecord withdrawRecord) {
+ QueryWrapper<WithdrawRecord> wrapper = new QueryWrapper<>(withdrawRecord);
+ return withdrawRecordMapper.selectOne(wrapper);
+ }
+
+ @Override
+ public List<WithdrawRecord> findList(WithdrawRecord withdrawRecord) {
+ QueryWrapper<WithdrawRecord> wrapper = new QueryWrapper<>(withdrawRecord);
+ return withdrawRecordMapper.selectList(wrapper);
+ }
+
+ @Override
+ public PageData<WithdrawRecord> findPage(PageWrap<WithdrawRecord> pageWrap) {
+ IPage<WithdrawRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ QueryWrapper<WithdrawRecord> queryWrapper = new QueryWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ if (pageWrap.getModel().getId() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getId, pageWrap.getModel().getId());
+ }
+ if (pageWrap.getModel().getCreator() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getCreator, pageWrap.getModel().getCreator());
+ }
+ if (pageWrap.getModel().getCreateDate() != null) {
+ queryWrapper.lambda().ge(WithdrawRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+ queryWrapper.lambda().le(WithdrawRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+ }
+ if (pageWrap.getModel().getEditor() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getEditor, pageWrap.getModel().getEditor());
+ }
+ if (pageWrap.getModel().getEditDate() != null) {
+ queryWrapper.lambda().ge(WithdrawRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+ queryWrapper.lambda().le(WithdrawRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+ }
+ if (pageWrap.getModel().getIsdeleted() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getIsdeleted, pageWrap.getModel().getIsdeleted());
+ }
+ if (pageWrap.getModel().getRemark() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getRemark, pageWrap.getModel().getRemark());
+ }
+ if (pageWrap.getModel().getMemberId() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getMemberId, pageWrap.getModel().getMemberId());
+ }
+ if (pageWrap.getModel().getCode() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getCode, pageWrap.getModel().getCode());
+ }
+ if (pageWrap.getModel().getBankId() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getBankId, pageWrap.getModel().getBankId());
+ }
+ if (pageWrap.getModel().getStatus() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getStatus, pageWrap.getModel().getStatus());
+ }
+ if (pageWrap.getModel().getAuditUser() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getAuditUser, pageWrap.getModel().getAuditUser());
+ }
+ if (pageWrap.getModel().getAuditTime() != null) {
+ queryWrapper.lambda().ge(WithdrawRecord::getAuditTime, Utils.Date.getStart(pageWrap.getModel().getAuditTime()));
+ queryWrapper.lambda().le(WithdrawRecord::getAuditTime, Utils.Date.getEnd(pageWrap.getModel().getAuditTime()));
+ }
+ if (pageWrap.getModel().getAuditRemark() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getAuditRemark, pageWrap.getModel().getAuditRemark());
+ }
+ if (pageWrap.getModel().getPayBank() != null) {
+ queryWrapper.lambda().eq(WithdrawRecord::getPayBank, pageWrap.getModel().getPayBank());
+ }
+ for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+ if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+ queryWrapper.orderByDesc(sortData.getProperty());
+ } else {
+ queryWrapper.orderByAsc(sortData.getProperty());
+ }
+ }
+ return PageData.from(withdrawRecordMapper.selectPage(page, queryWrapper));
+ }
+
+
+
+
+ @Override
+ public long count(WithdrawRecord withdrawRecord) {
+ QueryWrapper<WithdrawRecord> wrapper = new QueryWrapper<>(withdrawRecord);
+ return withdrawRecordMapper.selectCount(wrapper);
+ }
+
+
+
+ @Override
+ public void withdrawApply(WithdrawApplyRequest request, IntegralService integralService){
+ if (Objects.isNull( request)
+ || request.getMemberId() == null
+ || request.getBankId() == null
+ || request.getAmount() == null) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ //鏌ヨ鍟嗘埛鍓╀綑浣欓
+ Shop shop = shopMapper.selectById(request.getMemberId());
+ if(Objects.isNull(shop)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗘埛淇℃伅");
+ }
+ if(shop.getAmount().compareTo(request.getAmount()) < 0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍟嗘埛浣欓涓嶈冻");
+ }
+
+ WithdrawRecord withdrawRecord = new WithdrawRecord();
+ withdrawRecord.setCreateDate(new Date());
+ withdrawRecord.setIsdeleted(Constants.ZERO);
+ withdrawRecord.setEditDate(new Date());
+ withdrawRecord.setBankId(request.getBankId());
+ withdrawRecord.setAmount(request.getAmount());
+ withdrawRecord.setMemberId(request.getMemberId());
+ withdrawRecord.setCode(this.getNextInCode());
+ withdrawRecord.setStatus(Constants.ZERO);
+ withdrawRecordMapper.insert(withdrawRecord);
+
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.WITHDRAW_APPLY);
+ dealIntegralRequest.setIntegralNum(request.getAmount());
+ dealIntegralRequest.setObjId(withdrawRecord.getId());
+ dealIntegralRequest.setOrderCode(withdrawRecord.getCode().toString());
+ dealIntegralRequest.setMemberId(request.getMemberId());
+ dealIntegralRequest.setDealType(Constants.ONE);
+ integralService.dealShopAmount(dealIntegralRequest);
+ }
+
+
+
+ public synchronized Long getNextInCode(){
+ String prefix = DateUtil.getDate(new Date(),"yyyyMMdd") ;
+ Integer countNum = RedisUtil.getObject(redisTemplate, Constants.RedisKeys.WITHDRAW_KEY,Integer.class);
+ countNum = Constants.formatIntegerNum(countNum)+1;
+ //鏇存柊缂撳瓨
+ RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,countNum);
+ String nextIndex =Long.toString( countNum);
+ return Long.parseLong(prefix + StringUtils.leftPad(nextIndex,4,"0"));
+ }
+
+
+
+
+
+}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
index df75ba5..19c6c9e 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
@@ -47,6 +47,16 @@
return ApiResponse.success(memberService.wxLogin(code,recId));
}
+ @LoginRequired
+ @ApiOperation(value = "缁戝畾鎵嬫満鍙�", notes = "灏忕▼搴忕")
+ @PostMapping("/wxPhone")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+ })
+ public ApiResponse<AccountResponse> wxPhone(@Valid @RequestBody WxPhoneRequest wxPhoneRequest) {
+ return ApiResponse.success(memberService.wxPhone(wxPhoneRequest));
+ }
+
@ApiOperation(value = "娴嬭瘯鐧婚檰鎺ュ彛", notes = "灏忕▼搴忕")
@GetMapping("/testLogin")
@ApiImplicitParams({
@@ -56,17 +66,6 @@
return ApiResponse.success(memberService.wxLoginTest(memberId));
}
- @LoginRequired
- @ApiOperation(value = "缁戝畾鎵嬫満鍙�", notes = "灏忕▼搴忕")
- @PostMapping("/wxPhone")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
- })
- public ApiResponse wxLogin(@Valid @RequestBody WxPhoneRequest wxPhoneRequest) {
- wxPhoneRequest.setMemberId(getMemberId());
- memberService.wxPhone(wxPhoneRequest);
- return ApiResponse.success("缁戝畾鎴愬姛");
- }
@LoginRequired
@ApiOperation(value = "鏇存柊鐢ㄦ埛淇℃伅", notes = "灏忕▼搴忕")
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java b/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java
index 55b9b10..6095cae 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java
@@ -10,6 +10,7 @@
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.web.response.goods.CartGoodsResponse;
import com.doumee.service.business.*;
+import com.doumee.service.business.impl.MemberCouponServiceImpl;
import com.doumee.service.system.SystemDictDataService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
@@ -58,6 +59,14 @@
@Autowired
public ShopService shopService;
+ @Autowired
+ public WithdrawRecordService withdrawRecordService;
+
+ @Autowired
+ public MemberBankService memberBankService;
+
+ @Autowired
+ public MemberCouponServiceImpl memberCouponServiceImpl;
@Autowired
public GoodsorderDetailService goodsorderDetailService;
@@ -156,4 +165,10 @@
return obj != null ? (Integer) obj : null;
}
+ protected Integer getShopId() {
+ Object obj = this.getRequest().getAttribute(JwtTokenUtil.ShopId_Name);
+ return obj != null ? (Integer) obj : null;
+ }
+
+
}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/MemberBankApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/MemberBankApi.java
new file mode 100644
index 0000000..8e590d2
--- /dev/null
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/MemberBankApi.java
@@ -0,0 +1,57 @@
+package com.doumee.api.web;
+
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.MemberBank;
+import com.doumee.dao.web.dto.shop.*;
+import com.doumee.dao.web.request.MemberBankSaveRequest;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 17:33
+ */
+@Api(tags = "鍟嗘埛鎻愮幇閾惰鍗�")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/bank")
+@Slf4j
+public class MemberBankApi extends ApiController{
+
+
+ @LoginShopRequired
+ @ApiOperation(value = "鎻愮幇閾惰鏂板淇敼", notes = "灏忕▼搴忕")
+ @PostMapping("/saveBank")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse saveBank(@RequestBody MemberBankSaveRequest request){
+ request.setMemberId(getShopId());
+ memberBankService.saveOrUpdate(request);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+ @LoginShopRequired
+ @ApiOperation(value = "鑾峰彇鎴戠殑鎻愮幇閾惰鍗�", notes = "灏忕▼搴忕")
+ @GetMapping("/getBankList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<List<MemberBank>> getBankList(){
+ return ApiResponse.success(memberBankService.getMyBankList(getShopId()));
+ }
+
+}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
index edff3fb..3e1fc59 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
@@ -1,14 +1,24 @@
package com.doumee.api.web;
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.business.model.WithdrawRecord;
import com.doumee.dao.web.dto.shop.*;
+import com.doumee.dao.web.request.WithdrawApplyRequest;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
/**
* Created by IntelliJ IDEA.
@@ -68,4 +78,46 @@
shopService.update(shopDTO,memberId);
return ApiResponse.success(null);
}
+
+
+
+ @LoginRequired
+ @ApiOperation(value = "鐢ㄦ埛涓嬪崟鏌ヨ鍙�夋嫨鐨勮嚜鎻愮粡閿�鍟�", notes = "灏忕▼搴忕")
+ @PostMapping("/getShopList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse getShopList(@RequestBody ShopListDTO dto){
+ return ApiResponse.success(shopService.getShopList(dto));
+ }
+
+
+
+ @LoginShopRequired
+ @ApiOperation(value = "鎻愮幇鐢宠 - 缁忛攢鍟�", notes = "灏忕▼搴忕")
+ @PostMapping("/withdrawApply")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse withdrawApply(@RequestBody WithdrawApplyRequest request){
+ request.setMemberId(getShopId());
+ withdrawRecordService.withdrawApply(request,integralService);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
+
+
+
+ @LoginShopRequired
+ @ApiOperation("鏌ヨ鎻愮幇鐢宠璇︽儏")
+ @GetMapping("/withdrawDetail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<WithdrawRecord> withdrawDetail(@RequestParam Integer id) {
+ return ApiResponse.success(withdrawRecordService.findById(id));
+ }
+
+
+
+
}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
new file mode 100644
index 0000000..3a55d80
--- /dev/null
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
@@ -0,0 +1,63 @@
+package com.doumee.api.web.mall;
+
+import com.doumee.api.web.ApiController;
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Integral;
+import com.doumee.dao.web.dto.IntegralRecordDTO;
+import com.doumee.dao.web.response.IntegralDataResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2026/1/14 16:53
+ */
+@Api(tags = "绉垎淇℃伅涓氬姟")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/integral")
+@Slf4j
+public class IntegralApi extends ApiController {
+
+ @LoginRequired
+ @ApiOperation("鑾峰彇鐢ㄦ埛鐨勭Н鍒嗚褰�")
+ @PostMapping("/findIntegralRecordPage")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<PageData<Integral>> findIntegralRecordPage (@RequestBody PageWrap<IntegralRecordDTO> pageWrap) {
+ return ApiResponse.success(integralService.findIntegralRecordPage(pageWrap));
+ }
+
+ @LoginRequired
+ @ApiOperation("鑾峰彇鐢ㄦ埛鍓╀綑绉垎涓庡緟鎯呭喌绉垎淇℃伅")
+ @PostMapping("/getIntegralData")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<IntegralDataResponse> getIntegralData (@RequestBody IntegralRecordDTO dto) {
+ return ApiResponse.success(integralService.getIntegralData(dto));
+ }
+
+
+
+
+
+
+
+
+}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
index 00f83d4..56be23e 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.doumee.api.web.ApiController;
import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.kuaidi100.DeliveryDTO;
import com.doumee.core.utils.kuaidi100.ExpressUtils;
@@ -14,10 +16,7 @@
import com.doumee.dao.business.model.MemberCoupon;
import com.doumee.dao.business.model.Shop;
import com.doumee.dao.web.dto.CouponDTO;
-import com.doumee.dao.web.request.OrderPayRequest;
-import com.doumee.dao.web.request.PageRequest;
-import com.doumee.dao.web.request.PayDetailRequest;
-import com.doumee.dao.web.request.ShopOrderPayRequest;
+import com.doumee.dao.web.request.*;
import com.doumee.dao.web.request.goods.DealOrderRequest;
import com.doumee.dao.web.request.goods.MemberOrderRequest;
import com.doumee.dao.web.request.goods.OrderCommentRequest;
@@ -135,19 +134,16 @@
return ApiResponse.success("鏌ヨ鎴愬姛", memberCouponService.getApplyCoupon(requestList,getMemberId()));
}
- @LoginRequired
- @ApiOperation("缁忛攢鍟嗗垪琛�")
- @PostMapping("/shopPage")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
- })
- public ApiResponse<IPage<Shop>> shopPage(@RequestBody PageWrap<Shop> pageWrap) {
- IPage<Shop> page = goodsorderService.getShopPage(pageWrap);
- return ApiResponse.success("鏌ヨ鎴愬姛",page);
- }
-
- @Autowired
- public MemberCouponServiceImpl memberCouponServiceImpl;
+// @LoginRequired
+// @ApiOperation("缁忛攢鍟嗗垪琛�")
+// @PostMapping("/shopPage")
+// @ApiImplicitParams({
+// @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+// })
+// public ApiResponse<IPage<Shop>> shopPage(@RequestBody PageWrap<Shop> pageWrap) {
+// IPage<Shop> page = goodsorderService.getShopPage(pageWrap);
+// return ApiResponse.success("鏌ヨ鎴愬姛",page);
+// }
@LoginRequired
@ApiOperation("璁㈠崟鏀粯")
@@ -299,4 +295,30 @@
return ApiResponse.success("鎿嶄綔鎴愬姛",deliveryDTO);
}
+
+
+ @LoginShopRequired
+ @ApiOperation("缁忛攢鍟嗚鍗曞垪琛�")
+ @PostMapping("/shopOrderPage")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<PageData<Goodsorder>> shopOrderPage(@RequestBody PageWrap<ShopOrderRequest> pageWrap) {
+ pageWrap.getModel().setShopId(getShopId());
+ PageData<Goodsorder> page = goodsorderService.shopOrderPage(pageWrap);
+ return ApiResponse.success("鏌ヨ鎴愬姛",page);
+ }
+
+
+ @LoginShopRequired
+ @ApiOperation("璁㈠崟璇︽儏 - 缁忛攢鍟�")
+ @GetMapping("/shopOrderDetail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "orderId", value = "璁㈠崟涓婚敭", required = true),
+ })
+ public ApiResponse<MemberOrderResponse> shopOrderDetail(@RequestParam Integer orderId) {
+ return ApiResponse.success("鏌ヨ鎴愬姛", goodsorderService.getGoodsOrderDetail(orderId));
+ }
+
}
--
Gitblit v1.9.3