修改诺干问题

This commit is contained in:
gaomusan 2025-03-04 15:27:59 +08:00
parent 9a71519295
commit e490a0a206
29 changed files with 775 additions and 154 deletions

View File

@ -68,8 +68,8 @@
<option name="tableUIInfoList">
<list>
<TableUIInfo>
<option name="className" value="CommoditiesGroup" />
<option name="tableName" value="commodities_group" />
<option name="className" value="Manicuristsign" />
<option name="tableName" value="manicuristsign" />
</TableUIInfo>
</list>
</option>

View File

@ -170,10 +170,28 @@ create table if not exists manicurist
INDEX idx_userId (userId)
) comment ='美甲师表' COLLATE = utf8mb4_unicode_ci;
create table if not exists manicuristSign
(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) not null comment '姓名',
manicuristId BIGINT NOT NULL COMMENT '美甲师ID关联美甲师表',
businessName varchar(512) not null comment '门店名称',
phone VARCHAR(20) COMMENT '联系电话',
salary DECIMAL(10, 2) comment '期望工资薪资',
signTime VARCHAR(100) not null comment '签约时长',
tenure VARCHAR(100) not null comment '工龄',
manicuristLv VARCHAR(100) not null comment '美甲师等级',
auditStatus TINYINT DEFAULT 0 comment '审核状态0-待审核1-审核通过2-审核不通过',
isDelete TINYINT DEFAULT 0 comment '逻辑删除标志0 表示未删除1 表示已删除',
createTime DATETIME DEFAULT CURRENT_TIMESTAMP not null comment '记录创建时间',
updateTime DATETIME DEFAULT CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '记录更新时间'
) comment ='美甲师签约表' COLLATE = utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS manicurist_auth
(
id BIGINT AUTO_INCREMENT COMMENT '认证唯一标识(主键,自增)' PRIMARY KEY,
artistId BIGINT NOT NULL COMMENT '美甲师ID关联美甲师表',
artistId BIGINT NOT NULL COMMENT '美甲师ID关联美甲师表',
name VARCHAR(100) COMMENT '美甲师名称',
certification_number VARCHAR(100) COMMENT '认证编号',
issuing_authority VARCHAR(100) COMMENT '发证机构',
@ -220,6 +238,7 @@ CREATE TABLE IF NOT EXISTS orders
orderNumber VARCHAR(50) NOT NULL UNIQUE COMMENT '订单号',
userId BIGINT NOT NULL COMMENT '用户ID关联用户表',
businessId bigint not null comment '商家id',
manicuristId bigint null comment '美甲师ID',
userName VARCHAR(100) NOT NULL COMMENT '用户姓名',
phone varchar(64) not null comment '手机号',
payMethod TINYINT NOT NULL COMMENT '支付方式0微信支付',

View File

@ -0,0 +1,41 @@
package com.cj.jiaqingjiayi.config;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConstants;
import com.alipay.api.DefaultAlipayClient;
import org.springframework.context.annotation.Bean;
public class AlipayClients {
//appid
public String appId = "2021004144652242";
//私钥
//沙箱公钥 支付宝公钥
public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo9gmNSz8l/eH4Uem6hqNoK1t91Gu5evoooJKzZraxPYW9AyJwH8Mxbag3qVaRSalz+OIHHVqszUxah98DbvaxJbpY9tB2zaLSvxhXM4U5iGFR3TqdqqvxsXsfiu+a0JHauuGYtuuNmUwR7ZFVub8Ma/YBCHfELPvl1TcX8MgMlHqw3NQqcEXZZO8Ziyxel7CqgHDx5dFn1meHDFWTajbWN/0TWSzvYAOKrlrS3LjjwbDzTr3BQzH84TLbLkBaMVGEUkJZUrVVkiN3XEVBpBUs5Cv5INN4L+UJ4kDy1u6LICzUVSSrQmHItuA+YiFHZ/WVJ18jISn0W7YZVyRqTo2sQIDAQAB";
// public String PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjqGlEXMznr4XlQ3hvbZnQmfj0iJ2MAmPmpNyXMuQhuMK2xx8t9HozL+YzZ8l/4ksgtzGCHx0NiObsYe6Tt0EogfBqXjPTst21AjrT1TPKOxSfv6WuqNLNuY5o/i8ev0OLAGg8YUD2PL1GXSIrUMqjUuCFYQ7iFgEtcN54GVh4XG7Qj6wpN8CCTwmG4R4vHk4Al0ydE2yf0Efj49EgIi+Oq8EkXPSgdWpcS+UaEyuFVr3R5am36MHp+rXkOm6NluVJFBD/JHsOjB/Wt0EGd2HSyhR7n0hjFpNfVodughLL53/zG+nZ7+mM25s2S7Qh4iirxTedeqXlvBMXffxLSQrtQIDAQAB";
//公钥appPrivateKey
//沙箱私钥 支付宝私钥
public String appPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC7rWG3si4XQlDEHjSe/ot98aCn/R25fCSiCBIUTTA6Wy3Gs5lk1XERw1N6loq8u9zR8vTQwzLnFmepwJx2sMLHGfJT3F6Y7Lx0z7gLYksMe+LIAfc+KYsfs0IyDvoKvwsm7XAzl8AYiqk1/p2dxc5etdvkLO7bXquyCDOclR3lL9NBgbJ6tH0fvcVd3RPmZk5Tb2hfn5JK1s/tAanbvFtKhLNCwX8qZp25+AfPakx2tRZkSgjh+fjA6ZElUnwq9ftHy16vfSmnX3C3LuDSKduo3EBkDhpGjTD5+zOs8tKGofW2gn347ouzXWnTz71ftzVwAgFUcOh4Ib0GVC9SKZBrAgMBAAECggEBAJEK8R8/tEFDfhnjYjWScYm3KLtLciJ8n+8dn6NS+DfRabJL8PutvUHGHAj8uWIdKg6T3sJMaVWQyjK16fYMq6umENLg17cGFquMMSeTIn8Wa3C5nDPNdXjdWAZJ7tJJTTwbeoBVAh+1YgqZqYRacCBgGf3hAARHyRfBIOodkEojc4oyzlbUGOz+Ee6/b+A9BZd84YWkbg/KlD9mlqSAYSGCKBM9nd8l1YIvr/4OgBn679x+A8pB8i5kGxP4fertZl2mkt75LigJ3Ab/vwoHDj1AuPjlUIce+PcTdxHqgNtIJSDWbop70BGPp0XQE9BRefPIPQfS9+2LO+eFeo4ESeECgYEA+DzH4cLoMYG9Hfq9IIbQyq6VJeip4/Lbv8h4RevGPHqyFIKB3fX7bHRlBB8hCnyX+zj4T/K50LEoZmo4tpVCv7YmRkyGRoF0QwaMgbo3bkaaCZeQnuPeZFaqyhszcJL1nhLghSNKcU75orStqf4H2mLL67VH1PkjelAWMrY1JVsCgYEAwYvMNzPkLG+p9MqGlkxgu2gQ6F4SdQp35XLHjygyTMG+qt/cPAbviyOILUhTLHP1s++kgw7z/qJPcNCQVVMWL6aBM40aRb+FiMajHouGe/q26zuDdtgsuqoN84/9phs7495Oa8ROxu6eZPuvU+OJNCgf/NMVkURbOpXtbe+yXjECgYBZwhiAQGqW5BOO0IgsR7MdZm0VrQApJTpiKUmb9rnSSocztVDiAjysJZYVHHBlC1IlC591wQ2BMV2rUoM5OdVN3r4OM0NmIQ754VdS3ROH801lZIFtgnV6kH/m3lkGPo1DYA4A9hbHy8emFnCpA+qxA4I6s2zKzF8Qrf6ozYt/+wKBgChyjrr6nTSsIViG+pluXMjNdrsY7cKH7YaF9i50uA5SbwZGwj/JM0ZgppTQCJHBqhdwfXDmLxeH1BI/g+pQ8tICef3L/zGUVNPAr1Yy0mgWfSOrzE2J388iuserz9Zm2p1EWB8tZ0krlO6Fqp5dbs73k7fCZT92iZo0uum+rggBAoGBAIO74oQpY3lY6OgvjZJAHcr9RiGPB7qQ+zmROxCqzFXdtNZ5sHb1Jdg+IsBcI7ZadFT28x/ENNpfO78mC+1j56mmN9BUpORBIcCaEzp2KYgP7e4FnWTluMvFV/2yBMlCfUEYHPfPK1TfD05oBJY4lTMD2qsT5RhS1ipFqagZgQ1X";
// public String appPrivateKey ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCOoaURczOevheVDeG9tmdCZ+PSInYwCY+ak3Jcy5CG4wrbHHy30ejMv5jNnyX/iSyC3MYIfHQ2I5uxh7pO3QSiB8GpeM9Oy3bUCOtPVM8o7FJ+/pa6o0s25jmj+Lx6/Q4sAaDxhQPY8vUZdIitQyqNS4IVhDuIWAS1w3ngZWHhcbtCPrCk3wIJPCYbhHi8eTgCXTJ0TbJ/QR+Pj0SAiL46rwSRc9KB1alxL5RoTK4VWvdHlqbfowen6teQ6bo2W5UkUEP8kew6MH9a3QQZ3YdLKFHufSGMWk19Wh26CEsvnf/Mb6dnv6YzbmzZLtCHiKKvFN516peW8Exd9/EtJCu1AgMBAAECggEAPghReVhoL/cu3HXQIylsmXYDoIW6b0QJP8o25+Lk9bVTKF6oY24Y2MvPkkZQSWYIhNWuD0zJYi50bW7BecEoXawP7zwKtZNKGAfVB4i0HHFDo9XoCj4w3SyeDxGEL91VR5Bhxgj61mU8chi7xNc8b31SkzcSiUb2rXLZ091kB58/xtzQk2nZAhKhwms7gbX7qxm8+TWLRK9g4vWmsGVqbgFNj/sutqBURSeU/pHmW9PMqgcWvx6AwWWi+VgBUSoIgMnX7r7s6ZlgeDIgioii3JdCcr1nq39sVYPwFpwIe7a1DOCB58B+v2un1XoThC7ZNEcbwP5oYpUdFhSoxClrNQKBgQDJc/A1nz2yYiLUHUMJn2DhyTrOnCSclmowuzJVkyuo5gQPfZ3dTmjdPkM/fg09J3+zi3UCSwZd6dGMzJVHWooMniSiomZ/rY+o9SVTAJOjxt29N8jFN92b3fB43hbAWyBOuy4NMZMcr+4cADuqRHz2pKAeaALiZdpTbrTCzVXtqwKBgQC1QGS0sv8VU9fyBCyrYU4kQh8Fcvz0g6ObgUnHZi6UIL+Cy0/3JIGeIyvB/n47RF1wLUz4wykwW70e1qlMz7w21HM+DB8fVuzbO7SmQI3gDo024kQkWWGUhe3/w9ztzLF9ezleSN6wnrPeDbeMV+pURbsxIXA9xg7DYpZZ76ksHwKBgHQnF/oi7bTbpo88q/lxXq/wkaqtFuL+Sw378UKsD4Fb1j2ERTBj1Ey0aJvENyfqjVPddcKztWESvtL65pt0laI+0IrBLm4xiWJ2rmWUMIw+zn0aG/Wyh2Emb0+RZfbU0+TxQdUzn0nsGlMkw0IiKRcgxn2hpQAaj+6JJ0omkIPvAoGAZ2eGTKT17Cf6QgNprJiF6R+j7QruD11uoJABFHZSSoXoXGk7hMbZ/+sW0sUrJQrat93QVPeabxFXctmKmtzFBw7rdFGcC9gepvCIHnUju9jxbYdm0sn/ZqmF323RhAVMmUcMsqKmEWNpQFzZA4NAl7V0lxH5o/RzhbqgBk05WYcCgYEAny/umQs7+NYgwL/FztMJVljfQsGY81mhgrQyPhmg/7NiWmLodJtwQgSj3UitDVtUGhZRnuidO8P1XW0sUyDwc8xMLb+0qVxX4gMpM4J1B0UaIp+oPg7hCXeFGxkWQl8bPY0RFa3GOfT2/D63NpXqYw8Fe1lZWoIMz+PBdx0YN90=";
//应用证书
private String appCertPath;
//支付宝证书
private String alipayCertPath;
//支付宝根证书
private String alipayRootCertPath;
//回调地址
private String notify;
//字符集 签名
private String gateway = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
// 公私钥模式
@Bean
public AlipayClient alipayClient() throws AlipayApiException {
AlipayClient client = new DefaultAlipayClient(this.gateway, this.appId, this.appPrivateKey, AlipayConstants.FORMAT_JSON, AlipayConstants.CHARSET_UTF8, PublicKey, AlipayConstants.SIGN_TYPE_RSA2);
return client;
}
}

View File

@ -6,6 +6,7 @@ import com.alipay.api.domain.AlipayTradeCloseModel;
import com.alipay.api.domain.AlipayTradeCreateModel;
import com.alipay.api.domain.AlipayTradeQueryModel;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.*;
import com.alipay.api.response.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -21,13 +22,16 @@ import com.cj.jiaqingjiayi.mapper.UserMapper;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.domain.Orders;
import com.cj.jiaqingjiayi.model.domain.User;
import com.cj.jiaqingjiayi.model.request.AlipayTradeCreateRequest1;
import com.cj.jiaqingjiayi.model.request.CreateAlipayRequest;
import com.cj.jiaqingjiayi.model.vo.UserVO;
import com.cj.jiaqingjiayi.service.AliPayService;
import com.cj.jiaqingjiayi.service.OrderItemsService;
import com.cj.jiaqingjiayi.service.OrdersService;
import com.cj.jiaqingjiayi.service.UserService;
import com.cj.jiaqingjiayi.utils.RandomNumberGenerator;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
@ -36,13 +40,15 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import static com.cj.jiaqingjiayi.contant.UserConstant.USER_LOGIN_STATE;
@Slf4j
@Api(tags = "支付宝接口")
@RestController
@RequestMapping("/Alipay")
@ -67,6 +73,9 @@ public class AlipayController {
@Resource
private OrdersService ordersService;
@Resource
private AliPayService aliPayService;
@Resource
private OrderItemsService orderItemsService;
@ -75,6 +84,8 @@ public class AlipayController {
private static String authToken;
public static final String NOURL = "http://39.101.78.35:1107/api/Alipay/notifyUrl";
/**
* 解析code获取open_id和token
@ -82,14 +93,14 @@ public class AlipayController {
* @throws AlipayApiException 支付宝api异常
*/
@GetMapping("/parseCode")
public BaseResponse<UserVO> login(String authcode, long severId, HttpServletRequest req) throws AlipayApiException {
public BaseResponse<UserVO> login(@RequestParam String authcode,@RequestParam long severId, HttpServletRequest req) throws AlipayApiException {
AlipayConfig alipayConfig = choiceServer(severId);
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setCode(authcode);
request.setGrantType("authorization_code");
AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
// System.out.println(response.getBody());打印所有响应
// System.out.println(response.getBody());//打印所有响应
authToken = response.getAccessToken();
if (!response.isSuccess()) {
return ResultUtils.error(ErrorCode.PARAMS_ERROR);
@ -127,63 +138,27 @@ public class AlipayController {
/**
* 创建支付
* @param request
* @return
* @throws AlipayApiException
*/
@Transactional(rollbackFor = Exception.class)
@GetMapping("/create/alipay")
public BaseResponse<String> AlipayTradeCreate(@RequestParam Long id, HttpServletRequest request) throws AlipayApiException {
@PostMapping("/create/alipay")
public BaseResponse<String> AlipayTradeCreate(@RequestBody AlipayTradeCreateRequest1 pay, HttpServletRequest request) throws AlipayApiException {
User loginUser = userService.getLoginUser(request);
String miniOpenId = loginUser.getOpenId();
ThrowUtils.throwIf(miniOpenId == null, ErrorCode.NOT_FOUND_ERROR, "不是小程序用户");
QueryWrapper<Orders> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("orderNumber", id);
Orders order = ordersService.getOne(queryWrapper);
// User loginUser = userService.getLoginUser(request);
// String miniOpenId = loginUser.getOpenId();
User byId = userService.getById(pay.getUserId());
ThrowUtils.throwIf(byId.getOpenId() == null, ErrorCode.NOT_FOUND_ERROR, "不是小程序用户");
Orders order = ordersService.getById(pay.getId());
ThrowUtils.throwIf(order == null, ErrorCode.NOT_FOUND_ERROR, "订单不存在");
ThrowUtils.throwIf(order.getPayMethod() != 0, ErrorCode.OPERATION_ERROR, "订单状态错误");
if (!loginUser.getId().equals(order.getUserId())) {
if (!byId.getId().equals(order.getUserId())) {
throw new BusinessException(ErrorCode.NO_AUTH, "你不是该订单用户!");
}
OrderItems orderItems = orderItemsService.getById(order.getId());
BigDecimal totalPrice = order.getTotalPrice();
String total = totalPrice.setScale(2, RoundingMode.DOWN).toString(); // 保证两位小数
// 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeCreateRequest aliRequest = new AlipayTradeCreateRequest();
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
// 设置商户订单号
model.setOutTradeNo(order.getOrderNumber());
// 设置订单总金额
model.setTotalAmount(total);
// 设置订单标题
model.setSubject("");
// 设置产品码
model.setProductCode("JSAPI_PAY");
// 设置卖家支付宝用户ID
model.setSellerId("2088721037774480");
// 设置买家支付宝用户唯一标识
model.setBuyerOpenId(miniOpenId);
// 设置小程序支付中
model.setOpAppId("2021004144652242");
aliRequest.setBizModel(model);
String tradeNo = "";
try {
AlipayTradeCreateResponse response = alipayClient.execute(aliRequest);
tradeNo = response.getTradeNo();
} catch (AlipayApiException e) {
e.printStackTrace();
}
String tradeNo = aliPayService.createPayment(String.valueOf(order.getId()), byId.getOpenId(), order.getTotalPrice());
log.info("tradeNo:" + tradeNo);
return ResultUtils.success(tradeNo);
}
@ -199,7 +174,7 @@ public class AlipayController {
model.setTradeNo(orderNo);
request.setBizModel(model);
//request.setNotifyUrl(NOURL);
request.setNotifyUrl(NOURL);
AlipayTradeCloseResponse response = alipayClient.execute(request);
//这里应该写进日志
@ -216,7 +191,7 @@ public class AlipayController {
QueryWrapper<Orders> ordersQueryWrapper = new QueryWrapper<>();
ordersQueryWrapper.eq("pickupCode", orderNo);
ordersQueryWrapper.eq("orderNumber", orderNo);
Orders orders = ordersService.getOne(ordersQueryWrapper);
model.setOutTradeNo(orderNo);
model.setRefundAmount(String.valueOf(orders.getTotalPrice()));
@ -224,7 +199,7 @@ public class AlipayController {
//model.setOutRequestNo("123");
request.setBizModel(model);
//request.setNotifyUrl(NOURL);
request.setNotifyUrl(NOURL);
AlipayTradeRefundResponse response = alipayClient.execute(request);
String body = response.getBody();
@ -245,7 +220,7 @@ public class AlipayController {
model.setOutTradeNo(orderNo);
request.setBizModel(model);
//request.setNotifyUrl(NOURL);
request.setNotifyUrl(NOURL);
AlipayTradeQueryResponse response = alipayClient.execute(request);
String body = response.getBody();
@ -268,6 +243,70 @@ public class AlipayController {
return alipayConfig;
}
@PostMapping("/notifyUrl")
@Transactional(rollbackFor = Exception.class)
public synchronized void aliPayNotifyUrl(HttpServletRequest request, HttpServletResponse response) {
System.out.println(log);
// HttpServletRequest 的参数转换为 Map<String, String>
Map<String,String> params = new HashMap<>();Map<String, String[]> requestParams = request.getParameterMap();
for(String name : requestParams.keySet()) {
params.put(name, request.getParameter(name));
}
//修改订单信息
String out_trade_no = params.get("out_trade_no");
log.info( "23333333333333" + out_trade_no);
QueryWrapper<Orders> ordersQueryWrapper = new QueryWrapper<>();
ordersQueryWrapper.eq("orderNumber", out_trade_no);
Orders orders = ordersService.getOne(ordersQueryWrapper);
orders.setPaymentStatus(1);
Date date = new Date();
orders.setUpdateTime(date);
boolean update = ordersService.updateById(orders);
log.info("orders:" + orders);
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败");
//TODO 商家通知
// websocketService.sendOrderMessage(orders);
String resultInfo = "buyer_id=208****42&total_amount=0.01&body=***试&trade_no=20190329**941025940236&notify_time=2019-03-29 19:42:04&subject=**电脑网站支付&sign_type=RSA2&charset=UTF-8&auth_app_id=201****222&notify_type=trade_status_sync&invoice_amount=0.01&out_trade_no=20190329ygyg45484544100003&trade_status=TRADE_SUCCESS&gmt_payment=2019-03-29 19:42:03&version=1.0&point_amount=0.00&sign=LDDUIGQmc+1qNtk3oyoAKVeMUKTngdX3ZjVeZOK0EjiPDJ/+Nk+0WSqcE6J7/5xb96Z/vP0yY3pVhZUiFVJ1G45/ys/HAleHh+EERZ1lkCkule1sSyaGFTKQGKx4uHpTyqIgRB1bouf19RPbSx1EkA0VkCarSy9G/OEG5Qmg8UdL2dRulMhlbOHS7tdMJJycDA8vOspOUMeQmk/H6IK9R2Kou5hN2T3KR1GWLYFK+z1jeZhQB3q52lZynO0OFjSzU4aQUBMW5QskQppBYd/ghtY/2YP+2H6YVGNgVmaheZMQ3PVTBALEV+8rZa91salH9DkKN2UCYGvNSNDT1VGCTQ==&gmt_create=2019-03-29 19:42:00&buyer_pay_amount=0.01&receipt_amount=0.01&fund_bill_list=[{\"amount\":\"0.01\",\"fundChannel\":\"PCREDIT\"}]&seller_id=208****0&app_id=2014100***22&notify_id=20190329002221942040**8";
//编码格式
String charset="utf-8";
//签名方式
String sign_type="RSA2";
//对待签名字符串数据通过&进行拆分
String [] temp = resultInfo.split("&");
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
//把拆分数据放在map集合内
for (int i = 0; i < temp.length; i++) {
String[] arr = temp[i].split("=", 2); //通过"="号分割成2个数据
String[] tempAagin = new String[arr.length]; //再开辟一个数组用来接收分割后的数据
for (int j = 0; j < arr.length; j++) {
tempAagin[j] = arr[j];
}
map.put(tempAagin[0], tempAagin[1]);
}
System.out.println(map);
try {
//验签方法
boolean signVerified = AlipaySignature.rsaCheckV1(params,PublicKey,charset,sign_type);
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
if (signVerified && "TRADE_SUCCESS".equals(params.get("trade_status"))) {
// 业务处理
writer.println("success");
} else {
writer.println("fail");
}
} catch (Exception e) {
e.printStackTrace();
}
}
private AlipayConfig choiceServer(long serverId) {
String testPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC7rWG3si4XQlDEHjSe/ot98aCn/R25fCSiCBIUTTA6Wy3Gs5lk1XERw1N6loq8u9zR8vTQwzLnFmepwJx2sMLHGfJT3F6Y7Lx0z7gLYksMe+LIAfc+KYsfs0IyDvoKvwsm7XAzl8AYiqk1/p2dxc5etdvkLO7bXquyCDOclR3lL9NBgbJ6tH0fvcVd3RPmZk5Tb2hfn5JK1s/tAanbvFtKhLNCwX8qZp25+AfPakx2tRZkSgjh+fjA6ZElUnwq9ftHy16vfSmnX3C3LuDSKduo3EBkDhpGjTD5+zOs8tKGofW2gn347ouzXWnTz71ftzVwAgFUcOh4Ib0GVC9SKZBrAgMBAAECggEBAJEK8R8/tEFDfhnjYjWScYm3KLtLciJ8n+8dn6NS+DfRabJL8PutvUHGHAj8uWIdKg6T3sJMaVWQyjK16fYMq6umENLg17cGFquMMSeTIn8Wa3C5nDPNdXjdWAZJ7tJJTTwbeoBVAh+1YgqZqYRacCBgGf3hAARHyRfBIOodkEojc4oyzlbUGOz+Ee6/b+A9BZd84YWkbg/KlD9mlqSAYSGCKBM9nd8l1YIvr/4OgBn679x+A8pB8i5kGxP4fertZl2mkt75LigJ3Ab/vwoHDj1AuPjlUIce+PcTdxHqgNtIJSDWbop70BGPp0XQE9BRefPIPQfS9+2LO+eFeo4ESeECgYEA+DzH4cLoMYG9Hfq9IIbQyq6VJeip4/Lbv8h4RevGPHqyFIKB3fX7bHRlBB8hCnyX+zj4T/K50LEoZmo4tpVCv7YmRkyGRoF0QwaMgbo3bkaaCZeQnuPeZFaqyhszcJL1nhLghSNKcU75orStqf4H2mLL67VH1PkjelAWMrY1JVsCgYEAwYvMNzPkLG+p9MqGlkxgu2gQ6F4SdQp35XLHjygyTMG+qt/cPAbviyOILUhTLHP1s++kgw7z/qJPcNCQVVMWL6aBM40aRb+FiMajHouGe/q26zuDdtgsuqoN84/9phs7495Oa8ROxu6eZPuvU+OJNCgf/NMVkURbOpXtbe+yXjECgYBZwhiAQGqW5BOO0IgsR7MdZm0VrQApJTpiKUmb9rnSSocztVDiAjysJZYVHHBlC1IlC591wQ2BMV2rUoM5OdVN3r4OM0NmIQ754VdS3ROH801lZIFtgnV6kH/m3lkGPo1DYA4A9hbHy8emFnCpA+qxA4I6s2zKzF8Qrf6ozYt/+wKBgChyjrr6nTSsIViG+pluXMjNdrsY7cKH7YaF9i50uA5SbwZGwj/JM0ZgppTQCJHBqhdwfXDmLxeH1BI/g+pQ8tICef3L/zGUVNPAr1Yy0mgWfSOrzE2J388iuserz9Zm2p1EWB8tZ0krlO6Fqp5dbs73k7fCZT92iZo0uum+rggBAoGBAIO74oQpY3lY6OgvjZJAHcr9RiGPB7qQ+zmROxCqzFXdtNZ5sHb1Jdg+IsBcI7ZadFT28x/ENNpfO78mC+1j56mmN9BUpORBIcCaEzp2KYgP7e4FnWTluMvFV/2yBMlCfUEYHPfPK1TfD05oBJY4lTMD2qsT5RhS1ipFqagZgQ1X";
String testAlipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo9gmNSz8l/eH4Uem6hqNoK1t91Gu5evoooJKzZraxPYW9AyJwH8Mxbag3qVaRSalz+OIHHVqszUxah98DbvaxJbpY9tB2zaLSvxhXM4U5iGFR3TqdqqvxsXsfiu+a0JHauuGYtuuNmUwR7ZFVub8Ma/YBCHfELPvl1TcX8MgMlHqw3NQqcEXZZO8Ziyxel7CqgHDx5dFn1meHDFWTajbWN/0TWSzvYAOKrlrS3LjjwbDzTr3BQzH84TLbLkBaMVGEUkJZUrVVkiN3XEVBpBUs5Cv5INN4L+UJ4kDy1u6LICzUVSSrQmHItuA+YiFHZ/WVJ18jISn0W7YZVyRqTo2sQIDAQAB";
@ -280,17 +319,19 @@ public class AlipayController {
alipayConfig.setPrivateKey(privateKey);
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(alipayPublicKey);
alipayConfig.setCharset("UTF-8");
alipayConfig.setCharset("utf-8");
alipayConfig.setSignType("RSA2");
}
else if (serverId == 1) {
alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
alipayConfig.setAppId(appId);
alipayConfig.setPrivateKey(testPrivateKey);
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(testAlipayPublicKey);
alipayConfig.setCharset("UTF-8");
alipayConfig.setConnectTimeout(15000);
alipayConfig.setFormat("json");
alipayConfig.setCharset("utf-8");
alipayConfig.setSignType("RSA2");
// log.info("应用网关:" + "https://openapi-sandbox.dl.alipaydev.com/gateway.do");
}
else {
throw new BusinessException(ErrorCode.PARAMS_ERROR,"网关选择错误");

View File

@ -124,8 +124,7 @@ public class ManicuristController {
@ApiOperation(value = "管理修改美甲师信息")
@PostMapping("/update")
public BaseResponse<Boolean> UpdateManicurist(@RequestBody ManicuristUpdateRequest manicuristUpdateRequest, HttpServletRequest request){
//判断是否为管理员
userService.isAdmin(request);
if (manicuristUpdateRequest == null || manicuristUpdateRequest.getId() == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "传入参数为空");

View File

@ -0,0 +1,151 @@
//package com.cj.jiaqingjiayi.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.cj.jiaqingjiayi.common.BaseResponse;
//import com.cj.jiaqingjiayi.common.ErrorCode;
//import com.cj.jiaqingjiayi.common.ResultUtils;
//import com.cj.jiaqingjiayi.exception.BusinessException;
//import com.cj.jiaqingjiayi.exception.ThrowUtils;
//import com.cj.jiaqingjiayi.model.domain.Business;
//import com.cj.jiaqingjiayi.model.domain.Manicurist;
//import com.cj.jiaqingjiayi.model.domain.Manicuristsign;
//import com.cj.jiaqingjiayi.model.request.manicuristSign.ManicuristSignAddRequest;
//import com.cj.jiaqingjiayi.model.vo.ManicuristsignVO;
//import com.cj.jiaqingjiayi.service.BusinessService;
//import com.cj.jiaqingjiayi.service.ManicuristService;
//import com.cj.jiaqingjiayi.service.ManicuristsignService;
//import com.cj.jiaqingjiayi.service.UserService;
//import com.cj.jiaqingjiayi.utils.BeanCopyUtils;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.beans.BeanUtils;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//import java.util.List;
//
//@Api(tags = "美甲师签约接口")
//@RestController
//@RequestMapping("/manicuristSign")
//public class ManicuristSignController {
//
// @Resource
// private ManicuristsignService manicuristsignService;
//
// @Resource
// private ManicuristService manicuristService;
//
// @Resource
// private BusinessService businessService;
//
// /**
// * 添加签约
// */
// @ApiOperation(value = "添加美甲师签约")
// @PostMapping("/add")
// @Transactional(rollbackFor = Exception.class)
// public BaseResponse<Long> addManicuristSign(@RequestBody ManicuristSignAddRequest addRequest){
//
// ThrowUtils.throwIf(addRequest == null, ErrorCode.PARAMS_ERROR);
//
// Manicuristsign manicuristsign = new Manicuristsign();
//
// BeanUtils.copyProperties(addRequest, manicuristsign);
//
// boolean save = manicuristsignService.save(manicuristsign);
//
// if (!save) {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR, "添加失败");
// }
// return ResultUtils.success(manicuristsign.getId(), "添加成功");
// }
//
//
// /**
// * 通过签约
// */
// @ApiOperation(value = "同意美甲师签约")
// @GetMapping("/success")
// @Transactional(rollbackFor = Exception.class)
// public BaseResponse<Boolean> succManicuristSign(@RequestParam Long signId){
//
// ThrowUtils.throwIf(signId < 0 , ErrorCode.PARAMS_ERROR);
// //拿到签约数据
// Manicuristsign manicuristsign = manicuristsignService.getById(signId);
// //拿到签约的美甲师数据
// Manicurist manicurist = manicuristService.getById(manicuristsign.getManicuristId());
// ThrowUtils.throwIf(manicurist == null, ErrorCode.SYSTEM_ERROR);
// Manicurist manicuristNew = new Manicurist();
//
// QueryWrapper<Business> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("businessName", manicuristsign.getBusinessName());
// Business business = businessService.getOne(queryWrapper);
// manicurist.setBusinessId(business.getId());
// //更新美甲师所属的美甲店铺
// BeanUtils.copyProperties(manicurist, manicuristNew);
// manicuristsign.setAuditStatus(1);
//
// boolean flag = manicuristService.updateById(manicuristNew);
// ThrowUtils.throwIf(!flag , ErrorCode.OPERATION_ERROR);
//
// boolean updateById = manicuristsignService.updateById(manicuristsign);
// ThrowUtils.throwIf(!updateById, ErrorCode.SYSTEM_ERROR);
//
// return ResultUtils.success(true, "审核通过");
// }
//
// /**
// * 不同意美甲师签约
// */
// @ApiOperation(value = "不同意美甲师签约")
// @GetMapping("/refuse")
// @Transactional(rollbackFor = Exception.class)
// public BaseResponse<Boolean> refuseManicuristSign(@RequestParam Long signId){
//
// ThrowUtils.throwIf(signId < 0 , ErrorCode.PARAMS_ERROR);
// //拿到签约数据
// Manicuristsign manicuristsign = manicuristsignService.getById(signId);
//
// manicuristsign.setAuditStatus(2);
//
// boolean updateById = manicuristsignService.updateById(manicuristsign);
// ThrowUtils.throwIf(!updateById, ErrorCode.SYSTEM_ERROR);
//
// return ResultUtils.success(true, "审核不通过");
// }
//
// /**
// * 根据id删除签约
// */
// @ApiOperation(value = "根据id删除签约")
// @GetMapping("/delete")
// @Transactional(rollbackFor = Exception.class)
// public BaseResponse<Boolean> deleteManicuristSign(@RequestParam Long signId){
//
// ThrowUtils.throwIf(signId < 0 , ErrorCode.PARAMS_ERROR);
//
// boolean b = manicuristsignService.removeById(signId);
// ThrowUtils.throwIf(!b, ErrorCode.SYSTEM_ERROR);
//
// return ResultUtils.success(true, "删除成功");
// }
//
// /**
// * 查询当前店铺签约列表
// */
// @ApiOperation(value = "查询签约列表")
// @GetMapping("/select")
// @Transactional(rollbackFor = Exception.class)
// public BaseResponse<List<ManicuristsignVO>> selectManicuristSign(@RequestParam String businessName){
//
// ThrowUtils.throwIf(businessName == null , ErrorCode.PARAMS_ERROR);
//
// QueryWrapper<Manicuristsign> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("businessName", businessName);
//
// List<Manicuristsign> manicuristsignList = manicuristsignService.list(queryWrapper);
// List<ManicuristsignVO> manicuristsignVOList = manicuristsignService.getManicuristsignVO(manicuristsignList);
// return ResultUtils.success(manicuristsignVOList);
// }
//}

View File

@ -3,6 +3,7 @@ package com.cj.jiaqingjiayi.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cj.jiaqingjiayi.common.BaseResponse;
import com.cj.jiaqingjiayi.common.ErrorCode;
@ -21,6 +22,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@ -331,6 +333,54 @@ public class OrdersController {
}
}
/**
* 抢单
* @param commonRequest 订单id
* @param request 当前登录用户
* @return 是否抢单成功
*/
@ApiOperation(value = "抢单")
@PostMapping("/get/order")
@Transactional(rollbackFor = Exception.class)
public BaseResponse<Boolean> getOrder(@RequestBody CommonRequest commonRequest, HttpServletRequest request) {
if (commonRequest == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
Long ordersId = commonRequest.getId();
// Errand loginErrand = errandService.getLoginErrand(request);
// Long loginErrandId = loginErrand.getId();
// ErrandOrder errandOrder = errandOrderService.getOne(Wrappers.<ErrandOrder>lambdaQuery()
// .eq(ErrandOrder::getOrderId, ordersId));
// Integer state = loginErrand.getState();
// if (state != 1) {
// throw new BusinessException(ErrorCode.FORBIDDEN_ERROR, "当前跑腿不可抢单");
// }
// errandService.updateTotal(loginErrand, true);
// 开始事务
Orders orders = ordersService.getOrderWithPessimisticLock(ordersId);
// 判断订单是否已被抢
if (orders == null || orders.getManicuristId() != null) {
return ResultUtils.success(false); // 订单已经被抢或不存在
}
// 更新订单的 errandId 和状态
orders.setManicuristId(commonRequest.getManicuristId());
orders.setClaimStatus(1);
boolean update = ordersService.updateById(orders);
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "抢单失败");
// errandOrder.setErrandState(2); // 2待取货
// boolean update1 = errandOrderService.updateById(errandOrder);
// ThrowUtils.throwIf(!update1, ErrorCode.OPERATION_ERROR, "更新跑腿订单关联失败");
return ResultUtils.success(true);
}
}

View File

@ -41,8 +41,6 @@ public class UserController {
/**
* 用户注册请求接口
*
* @param userRegisterRequest
* @return
*/
@ApiOperation(value = "用户注册")
@PostMapping("/register")
@ -67,9 +65,7 @@ public class UserController {
/**
* 用户登录请求接口
*
* @param userLoginRequest
* @param request 前端请求对象
* @return
*/
@ApiOperation(value = "用户登录")
@PostMapping("/login")
@ -91,8 +87,6 @@ public class UserController {
/**
* 用户注销接口
* @param request
* @return
*/
@ApiOperation(value = "用户注销")
@PostMapping("/logout")
@ -106,9 +100,6 @@ public class UserController {
/**
* 查询用户(管理员)
* @param searchRequest
* @param request
* @return
*/
@ApiOperation(value = "查询用户")
@GetMapping("/search")
@ -142,9 +133,6 @@ public class UserController {
/**
* 删除用户(管理员)
* @param deleteRequest
* @param request
* @return
*/
@ApiOperation(value = "删除用户")
@PostMapping("/delete")
@ -160,8 +148,6 @@ public class UserController {
/**
* 获取当前登录的用户信息
* @param request
* @return
*/
@ApiOperation(value = "获取当前登录用户")
@GetMapping("/current")
@ -174,9 +160,6 @@ public class UserController {
/**
* 根据id获取用户(管理员)
* @param id
* @param request
* @return
*/
@ApiOperation(value = "根据id获取用户")
@GetMapping("/getById")
@ -195,9 +178,6 @@ public class UserController {
/**
* 用户修改密码
* @param updatePasswordRequest
* @param request
* @return
*/
@ApiOperation(value = "用户修改密码")
@PostMapping("/password/update")

View File

@ -16,5 +16,10 @@ public class CommonRequest implements Serializable {
*/
private Long id;
/**
* 美甲师Id
*/
private Long manicuristId;
private static final long serialVersionUID = 1L;
}

View File

@ -30,6 +30,7 @@ public class Manicurist implements Serializable {
*/
private Long businessId;
/**
* 美甲师姓名
*/

View File

@ -1,9 +1,7 @@
package com.cj.jiaqingjiayi.model.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@ -37,6 +35,12 @@ public class Orders implements Serializable {
*/
private Long businessId;
/**
* 商家id
*/
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Long manicuristId;
/**
* 用户姓名
*/

View File

@ -0,0 +1,16 @@
package com.cj.jiaqingjiayi.model.request;
import lombok.Data;
@Data
public class AlipayTradeCreateRequest1 {
/**
* 订单id
*/
private Long id;
/**
* 用户id
*/
private Long userId;
}

View File

@ -0,0 +1,51 @@
package com.cj.jiaqingjiayi.model.request.manicuristSign;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ManicuristSignAddRequest {
/**
* 姓名
*/
private String name;
/**
* 美甲师ID关联美甲师表
*/
private Long manicuristId;
/**
* 门店名称
*/
private String businessName;
/**
* 联系电话
*/
private String phone;
/**
* 期望工资薪资
*/
private BigDecimal salary;
/**
* 签约时长
*/
private String signTime;
/**
* 工龄
*/
private String tenure;
/**
* 美甲师等级
*/
private String manicuristLv;
}

View File

@ -0,0 +1,17 @@
package com.cj.jiaqingjiayi.model.request.manicuristSign;
import lombok.Data;
@Data
public class succManicuristSignRequest {
/**
* 美甲师Id
*/
private Long manicuristId;
/**
* 商家Id
*/
private Long businessId;
}

View File

@ -0,0 +1,68 @@
package com.cj.jiaqingjiayi.model.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class ManicuristsignVO implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 姓名
*/
private String name;
/**
* 美甲师ID关联美甲师表
*/
private Long manicuristId;
/**
* 门店名称
*/
private String businessName;
/**
* 联系电话
*/
private String phone;
/**
* 期望工资薪资
*/
private BigDecimal salary;
/**
* 签约时长
*/
private String signTime;
/**
* 工龄
*/
private String tenure;
/**
* 美甲师等级
*/
private String manicuristLv;
/**
* 审核状态0-待审核1-审核通过2-审核不通过
*/
private Integer auditStatus;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,8 @@
package com.cj.jiaqingjiayi.service;
import java.math.BigDecimal;
public interface AliPayService {
String createPayment(String orderId, String miniOpenId, BigDecimal amount);
}

View File

@ -36,6 +36,11 @@ public interface OrdersService extends IService<Orders> {
List<OrdersVO> getOrdersVO(List<Orders> ordersList);
/**
* 悲观锁
*/
Orders getOrderWithPessimisticLock(Long ordersId);
/**
* 获取查询条件
*/

View File

@ -0,0 +1,93 @@
package com.cj.jiaqingjiayi.service.impl;
import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.AlipayTradeCreateModel;
import com.alipay.api.request.AlipayTradeCreateRequest;
import com.alipay.api.response.AlipayTradeCreateResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cj.jiaqingjiayi.common.ErrorCode;
import com.cj.jiaqingjiayi.config.AlipayClients;
import com.cj.jiaqingjiayi.exception.BusinessException;
import com.cj.jiaqingjiayi.exception.ThrowUtils;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.domain.Orders;
import com.cj.jiaqingjiayi.service.AliPayService;
import com.cj.jiaqingjiayi.service.OrderItemsService;
import com.cj.jiaqingjiayi.service.OrdersService;
import com.cj.jiaqingjiayi.utils.UniqueNumberGenerator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
public class AlipayServiceImpl implements AliPayService {
@Resource
private OrdersService ordersService;
@Resource
private OrderItemsService orderDetailsService;
@Override
@Transactional(rollbackFor = Exception.class)
public synchronized String createPayment(String orderId, String miniOpenId, BigDecimal amount) {
//创建客户
AlipayClients clients = new AlipayClients();
//AlipayClient client = clients.alipayClient();
//创建交易请求
AlipayTradeCreateRequest aliRequest = new AlipayTradeCreateRequest();
//创建实体类
AlipayTradeCreateModel model = new AlipayTradeCreateModel();
//请求参数 沙箱内部参数
String outTradeNo = UniqueNumberGenerator.generateNumber();
Orders order = ordersService.getById(orderId);
if (order == null) {
log.error("订单不存在");
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "订单不存在,订单号:" + outTradeNo);
}
LambdaQueryWrapper<OrderItems> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OrderItems::getOrderId, orderId);
List<OrderItems> orderDetailsList = orderDetailsService.list(wrapper);
String subject = orderDetailsList.stream()
.map(OrderItems::getAttributeNames)
.collect(Collectors.joining(", "));
//给支付宝的订单号设置成取餐码
order.setOrderNumber(outTradeNo);
boolean update = ordersService.updateById(order);
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "修改订单状态失败");
model.setOutTradeNo(outTradeNo);
model.setTotalAmount(String.valueOf(amount));
model.setSubject(subject);
model.setProductCode("JSAPI_PAY");
model.setSellerId("2088721034640726");
model.setBuyerId("2088722034659383");
model.setOpAppId("2021004144652242");
///回调地址
aliRequest.setNotifyUrl("http://39.101.78.35:1107/api/Alipay/notifyUrl");
aliRequest.setBizModel(model);
String trade_no = null;
try {
AlipayTradeCreateResponse response = clients.alipayClient().execute(aliRequest);
trade_no = response.getTradeNo();
if (trade_no == null) {
throw new BusinessException(ErrorCode.NULL_ERROR, "未获取到trade_no");
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
return trade_no;
}
}

View File

@ -1,5 +1,6 @@
package com.cj.jiaqingjiayi.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -144,6 +145,18 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders>
return ordersList.stream().map(this::getOrdersVO).collect(Collectors.toList());
}
@Override
@Transactional
public Orders getOrderWithPessimisticLock(Long ordersId) {
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Orders::getId, ordersId);
// 使用悲观锁查询并锁定订单
Orders orders = this.getBaseMapper().selectOne(queryWrapper.last("FOR UPDATE"));
return orders;
}
@Override
public QueryWrapper<Orders> getQueryWrapper(OrderQueryRequest orderQueryRequest) {
if (orderQueryRequest == null) {

View File

@ -0,0 +1,44 @@
package com.cj.jiaqingjiayi.utils;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
/**
* 订单号
* @author bsz
*/
@Component
public class UniqueNumberGenerator {
private static int sequenceNumber = 1; // 初始化每天的序列号从1开始
private static String lastDate = ""; // 记录上次生成数字的日期
private static final Random random = new Random(); // 随机数生成器
// 生成17位的唯一编号
public static String generateNumber() {
// 获取当前日期的年月日格式 (前8位)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String dateStr = dateFormat.format(new Date());
// 检查日期是否变更如果变更则重置序列号
if (!dateStr.equals(lastDate)) {
lastDate = dateStr;
sequenceNumber = 1; // 每天重置为0001
}
// 生成中间5位的随机数
int middleRandom = 10000 + random.nextInt(90000); // 生成10000到99999之间的随机数
// 格式化后四位的序列号
String sequenceStr = String.format("%04d", sequenceNumber);
// 更新序列号为下一次调用准备
sequenceNumber++;
// 组合并返回结果
return dateStr + middleRandom + sequenceStr;
}
}

View File

@ -9,6 +9,7 @@
<result property="orderNumber" column="orderNumber" jdbcType="VARCHAR"/>
<result property="userId" column="userId" jdbcType="BIGINT"/>
<result property="businessId" column="businessId" jdbcType="BIGINT"/>
<result property="manicuristId" column="manicuristId" jdbcType="BIGINT"/>
<result property="userName" column="userName" jdbcType="VARCHAR"/>
<result property="phone" column="phone" jdbcType="VARCHAR"/>
<result property="payMethod" column="payMethod" jdbcType="TINYINT"/>
@ -27,6 +28,7 @@
businessId,userName,phone,
appointmentId,totalPrice,paymentStatus,
claimStatus,notes,createTime,
updateTime,isDelete,payMethod
updateTime,isDelete,payMethod,
manicuristId
</sql>
</mapper>

View File

@ -1,56 +1,21 @@
com\cj\jiaqingjiayi\model\request\user\UserUpdateRequest.class
com\cj\jiaqingjiayi\service\impl\OrdersServiceImpl.class
com\cj\jiaqingjiayi\utils\RandomNumberGenerator.class
com\cj\jiaqingjiayi\contant\UserConstant.class
com\cj\jiaqingjiayi\mapper\ManicuristAuthMapper.class
com\cj\jiaqingjiayi\model\request\user\UserLoginRequest.class
com\cj\jiaqingjiayi\exception\GlobalExceptionHandler.class
com\cj\jiaqingjiayi\service\impl\SpecificationsServiceImpl.class
com\cj\jiaqingjiayi\model\vo\CommoditiesVO.class
com\cj\jiaqingjiayi\contant\RegexConstant.class
com\cj\jiaqingjiayi\exception\BusinessException.class
com\cj\jiaqingjiayi\config\JsonConfig.class
com\cj\jiaqingjiayi\model\vo\OrderItemsVO.class
com\cj\jiaqingjiayi\config\Knife4jConfig.class
com\cj\jiaqingjiayi\model\request\user\UserUpdateMyRequest.class
com\cj\jiaqingjiayi\service\impl\SpecificationsCommoditiesServiceImpl.class
com\cj\jiaqingjiayi\model\domain\Attribute.class
com\cj\jiaqingjiayi\model\request\specifications\SpecificationsAddRequest.class
com\cj\jiaqingjiayi\model\request\user\UserAddRequest.class
com\cj\jiaqingjiayi\model\request\cart\CartDeleteRequest.class
com\cj\jiaqingjiayi\model\request\order\OrderQueryRequest.class
com\cj\jiaqingjiayi\model\request\order\OrderCountRequest.class
com\cj\jiaqingjiayi\service\impl\AppointmentsServiceImpl.class
com\cj\jiaqingjiayi\controller\SpecificationsController.class
com\cj\jiaqingjiayi\model\request\business\BusinessUpdateRequest.class
com\cj\jiaqingjiayi\service\impl\BusinessAuthServiceImpl.class
com\cj\jiaqingjiayi\exception\ThrowUtils.class
com\cj\jiaqingjiayi\model\vo\OrdersVO.class
com\cj\jiaqingjiayi\model\request\specifications\SpecificationsMyQueryRequest.class
com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesDeleteRequest.class
com\cj\jiaqingjiayi\controller\CartController.class
com\cj\jiaqingjiayi\service\impl\UserServiceImpl.class
com\cj\jiaqingjiayi\model\request\attribute\AttributeUpdateRequest.class
com\cj\jiaqingjiayi\service\impl\BusinessServiceImpl.class
com\cj\jiaqingjiayi\contant\FileConstant.class
com\cj\jiaqingjiayi\model\request\specifications\SpecificationsQueryRequest.class
com\cj\jiaqingjiayi\utils\RegexUtils.class
com\cj\jiaqingjiayi\service\UserService.class
com\cj\jiaqingjiayi\model\request\user\UserUpdatePasswordRequest.class
com\cj\jiaqingjiayi\service\OrderItemsService.class
com\cj\jiaqingjiayi\model\request\cart\CartUpdateRequest.class
com\cj\jiaqingjiayi\service\SpecificationsCommoditiesService.class
com\cj\jiaqingjiayi\contant\CommonConstant.class
com\cj\jiaqingjiayi\model\request\manicurist\ManicuristAddRequest.class
com\cj\jiaqingjiayi\utils\SqlUtils.class
com\cj\jiaqingjiayi\controller\FileController.class
com\cj\jiaqingjiayi\service\AttributeService.class
com\cj\jiaqingjiayi\mapper\AppointmentsMapper.class
com\cj\jiaqingjiayi\mapper\CommoditiesMapper.class
com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesUpdateRequest.class
com\cj\jiaqingjiayi\model\CommonRequest.class
com\cj\jiaqingjiayi\model\request\cart\CartAddRequest.class
com\cj\jiaqingjiayi\service\impl\CommoditiesServiceImpl.class
com\cj\jiaqingjiayi\model\domain\Appointments.class
com\cj\jiaqingjiayi\controller\ManicuristController.class
com\cj\jiaqingjiayi\model\vo\LoginUserVO.class
@ -62,71 +27,106 @@ com\cj\jiaqingjiayi\common\BaseResponse.class
com\cj\jiaqingjiayi\model\domain\Manicurist.class
com\cj\jiaqingjiayi\mapper\SpecificationsMapper.class
com\cj\jiaqingjiayi\mapper\ManicuristMapper.class
com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesQueryRequest.class
com\cj\jiaqingjiayi\mapper\AttributeMapper.class
com\cj\jiaqingjiayi\model\domain\Specifications.class
com\cj\jiaqingjiayi\config\CorsConfig.class
com\cj\jiaqingjiayi\mapper\UserMapper.class
com\cj\jiaqingjiayi\service\ManicuristService.class
com\cj\jiaqingjiayi\service\CommoditiesService.class
com\cj\jiaqingjiayi\mapper\BusinessMapper.class
com\cj\jiaqingjiayi\model\domain\BusinessAuth.class
com\cj\jiaqingjiayi\service\ManicuristAuthService.class
com\cj\jiaqingjiayi\model\request\manicurist\AdminManicuristAddRequest.class
com\cj\jiaqingjiayi\mapper\OrderItemsMapper.class
com\cj\jiaqingjiayi\model\request\business\BusinessQueryRequest.class
com\cj\jiaqingjiayi\model\vo\SpecificationsVO.class
com\cj\jiaqingjiayi\mapper\OrdersMapper.class
com\cj\jiaqingjiayi\model\vo\BusinessVO.class
com\cj\jiaqingjiayi\controller\OrdersController.class
com\cj\jiaqingjiayi\model\request\order\OrderAddRequest.class
com\cj\jiaqingjiayi\service\OrdersService.class
com\cj\jiaqingjiayi\service\impl\CartServiceImpl.class
com\cj\jiaqingjiayi\model\request\CreateAlipayRequest.class
com\cj\jiaqingjiayi\service\impl\ManicuristAuthServiceImpl.class
com\cj\jiaqingjiayi\model\request\cart\CartQueryRequest.class
com\cj\jiaqingjiayi\model\vo\BusinessAdminVO.class
com\cj\jiaqingjiayi\service\AppointmentsService.class
com\cj\jiaqingjiayi\model\request\appointments\AppointmentsAddRequest.class
com\cj\jiaqingjiayi\model\domain\OrderItems.class
com\cj\jiaqingjiayi\model\request\PageRequest.class
com\cj\jiaqingjiayi\model\request\manicurist\UserManicuristQueryRequest.class
com\cj\jiaqingjiayi\service\CartService.class
com\cj\jiaqingjiayi\mapper\BusinessAuthMapper.class
com\cj\jiaqingjiayi\model\request\user\UserSearchRequest.class
com\cj\jiaqingjiayi\service\SpecificationsService.class
com\cj\jiaqingjiayi\common\ErrorCode.class
com\cj\jiaqingjiayi\model\request\order\OrderItemsAddRequest.class
com\cj\jiaqingjiayi\controller\CommoditiesController.class
com\cj\jiaqingjiayi\model\request\manicurist\MyManicuristUpdateRequest.class
com\cj\jiaqingjiayi\service\BusinessAuthService.class
com\cj\jiaqingjiayi\model\domain\Business.class
com\cj\jiaqingjiayi\service\impl\OrdersServiceImpl.class
com\cj\jiaqingjiayi\utils\RandomNumberGenerator.class
com\cj\jiaqingjiayi\contant\UserConstant.class
com\cj\jiaqingjiayi\mapper\ManicuristAuthMapper.class
com\cj\jiaqingjiayi\model\request\user\UserLoginRequest.class
com\cj\jiaqingjiayi\contant\RegexConstant.class
com\cj\jiaqingjiayi\exception\BusinessException.class
com\cj\jiaqingjiayi\config\JsonConfig.class
com\cj\jiaqingjiayi\model\vo\OrderItemsVO.class
com\cj\jiaqingjiayi\config\Knife4jConfig.class
com\cj\jiaqingjiayi\model\request\user\UserUpdateMyRequest.class
com\cj\jiaqingjiayi\model\domain\Attribute.class
com\cj\jiaqingjiayi\model\request\specifications\SpecificationsAddRequest.class
com\cj\jiaqingjiayi\model\request\user\UserAddRequest.class
com\cj\jiaqingjiayi\model\request\order\OrderCountRequest.class
com\cj\jiaqingjiayi\service\impl\AppointmentsServiceImpl.class
com\cj\jiaqingjiayi\service\impl\BusinessAuthServiceImpl.class
com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesDeleteRequest.class
com\cj\jiaqingjiayi\service\impl\UserServiceImpl.class
com\cj\jiaqingjiayi\model\request\attribute\AttributeUpdateRequest.class
com\cj\jiaqingjiayi\contant\FileConstant.class
com\cj\jiaqingjiayi\model\request\specifications\SpecificationsQueryRequest.class
com\cj\jiaqingjiayi\utils\RegexUtils.class
com\cj\jiaqingjiayi\service\UserService.class
com\cj\jiaqingjiayi\model\request\user\UserUpdatePasswordRequest.class
com\cj\jiaqingjiayi\service\OrderItemsService.class
com\cj\jiaqingjiayi\model\request\cart\CartUpdateRequest.class
com\cj\jiaqingjiayi\contant\CommonConstant.class
com\cj\jiaqingjiayi\model\request\manicurist\ManicuristAddRequest.class
com\cj\jiaqingjiayi\controller\FileController.class
com\cj\jiaqingjiayi\mapper\AppointmentsMapper.class
com\cj\jiaqingjiayi\mapper\CommoditiesMapper.class
com\cj\jiaqingjiayi\model\CommonRequest.class
com\cj\jiaqingjiayi\model\request\cart\CartAddRequest.class
com\cj\jiaqingjiayi\service\impl\CommoditiesServiceImpl.class
com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesQueryRequest.class
com\cj\jiaqingjiayi\config\CorsConfig.class
com\cj\jiaqingjiayi\service\CommoditiesService.class
com\cj\jiaqingjiayi\mapper\BusinessMapper.class
com\cj\jiaqingjiayi\model\enums\FileUploadBizEnum.class
com\cj\jiaqingjiayi\model\domain\SpecificationsCommodities.class
com\cj\jiaqingjiayi\service\impl\OrderItemsServiceImpl.class
com\cj\jiaqingjiayi\model\request\attribute\AttributeAddRequest.class
com\cj\jiaqingjiayi\model\request\specifications\SpecificationsUpdateRequest.class
com\cj\jiaqingjiayi\mapper\OrderItemsMapper.class
com\cj\jiaqingjiayi\model\request\business\BusinessQueryRequest.class
com\cj\jiaqingjiayi\model\request\user\UserRegisterRequest.class
com\cj\jiaqingjiayi\model\vo\SpecificationsVO.class
com\cj\jiaqingjiayi\mapper\OrdersMapper.class
com\cj\jiaqingjiayi\model\vo\BusinessVO.class
com\cj\jiaqingjiayi\controller\AppointmentsController.class
com\cj\jiaqingjiayi\model\domain\Orders.class
com\cj\jiaqingjiayi\controller\OrdersController.class
com\cj\jiaqingjiayi\model\request\user\UserDeleteRequest.class
com\cj\jiaqingjiayi\model\vo\AttributeVO.class
com\cj\jiaqingjiayi\model\request\order\OrderAddRequest.class
com\cj\jiaqingjiayi\model\domain\User.class
com\cj\jiaqingjiayi\service\OrdersService.class
com\cj\jiaqingjiayi\model\domain\Cart.class
com\cj\jiaqingjiayi\service\impl\CartServiceImpl.class
com\cj\jiaqingjiayi\model\request\CreateAlipayRequest.class
com\cj\jiaqingjiayi\service\impl\ManicuristAuthServiceImpl.class
com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesAddRequest.class
com\cj\jiaqingjiayi\model\request\cart\CartQueryRequest.class
com\cj\jiaqingjiayi\model\domain\Commodities.class
com\cj\jiaqingjiayi\mapper\CartMapper.class
com\cj\jiaqingjiayi\config\MyBatisPlusConfig.class
com\cj\jiaqingjiayi\model\vo\BusinessAdminVO.class
com\cj\jiaqingjiayi\service\AppointmentsService.class
com\cj\jiaqingjiayi\service\BusinessService.class
com\cj\jiaqingjiayi\service\impl\AttributeServiceImpl.class
com\cj\jiaqingjiayi\model\request\manicurist\ManicuristQueryRequest.class
com\cj\jiaqingjiayi\model\vo\ManicuristVO.class
com\cj\jiaqingjiayi\model\request\manicurist\ManicuristUpdateRequest.class
com\cj\jiaqingjiayi\mapper\SpecificationsCommoditiesMapper.class
com\cj\jiaqingjiayi\model\request\appointments\AppointmentsAddRequest.class
com\cj\jiaqingjiayi\model\domain\OrderItems.class
com\cj\jiaqingjiayi\model\request\PageRequest.class
com\cj\jiaqingjiayi\model\request\manicurist\UserManicuristQueryRequest.class
com\cj\jiaqingjiayi\common\ResultUtils.class
com\cj\jiaqingjiayi\controller\AlipayController.class
com\cj\jiaqingjiayi\service\CartService.class
com\cj\jiaqingjiayi\mapper\BusinessAuthMapper.class
com\cj\jiaqingjiayi\service\impl\ManicuristServiceImpl.class
com\cj\jiaqingjiayi\model\request\user\UserSearchRequest.class
com\cj\jiaqingjiayi\model\domain\ManicuristAuth.class
com\cj\jiaqingjiayi\model\request\business\BusinessAddRequest.class
com\cj\jiaqingjiayi\service\SpecificationsService.class
com\cj\jiaqingjiayi\common\ErrorCode.class
com\cj\jiaqingjiayi\model\request\order\OrderItemsAddRequest.class
com\cj\jiaqingjiayi\model\request\UploadFileRequest.class
com\cj\jiaqingjiayi\controller\CommoditiesController.class
com\cj\jiaqingjiayi\model\request\manicurist\MyManicuristUpdateRequest.class
com\cj\jiaqingjiayi\service\BusinessAuthService.class
com\cj\jiaqingjiayi\JiaqingjiayiApplication.class
com\cj\jiaqingjiayi\model\domain\Business.class

View File

@ -42,7 +42,10 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\UserRatingController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\SqlUtils.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\specifications\SpecificationsAddRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\AlipayTradeCreateRequest1.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\BusinessController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\AliPayService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\ManicuristsignMapper.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\MyManicuristUpdateRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\appointments\AppointmentsAddRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartUpdateRequest.java
@ -81,6 +84,8 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\CartMapper.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\CollectController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\CommoditiesService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Manicuristsign.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicuristSign\ManicuristSignAddRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\BusinessAdminVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\SpecificationsController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\specifications\SpecificationsUpdateRequest.java
@ -104,8 +109,10 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\CartVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicurist\ManicuristUpdateRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\UserService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\ManicuristsignServiceImpl.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\domain\Attribute.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\group\AddGroupRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\AlipayServiceImpl.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\CartController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartQueryRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\ManicuristMapper.java
@ -115,6 +122,7 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\UserServiceImpl.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\UserVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\BusinessMapper.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\manicuristSign\succManicuristSignRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\LoginUserVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\common\ErrorCode.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\SpecificationsCommoditiesMapper.java
@ -122,6 +130,7 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\ManicuristAuthService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\JiaqingjiayiApplication.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\OrderItemsVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\AlipayClients.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\CartDTO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\business\BusinessUpdateRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\Commodities\CommoditiesDeleteRequest.java
@ -134,12 +143,15 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\exception\BusinessException.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\UserRatingService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\OrdersVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\vo\ManicuristsignVO.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\UserRatingServiceImpl.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\GroupController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\controller\ManicuristSignController.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserAddRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\AttributeService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\contant\CommonConstant.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\OrdersMapper.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\ManicuristsignService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\SpecificationsCommoditiesService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\impl\AppointmentsServiceImpl.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\cart\CartAddRequest.java
@ -158,6 +170,7 @@ E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\c
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\user\UserUpdatePasswordRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\BusinessAuthService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\service\BusinessLevelService.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\utils\UniqueNumberGenerator.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\model\request\PageRequest.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\config\JsonConfig.java
E:\gitjiaqingjiayi\jiaqingjiayi-houduan\project\jiaqingjiayi\src\main\java\com\cj\jiaqingjiayi\mapper\OrderItemsMapper.java