提交 2f8be2f1 作者: xiaowang

Merge branch 'develop'

package com.mmc.iuav.user.model.fdd.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (ContractInfoDO)实体类
*
* @author makejava
* @since 2023-09-07 10:14:08
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ContractInfoDTO implements Serializable {
private static final long serialVersionUID = -42558889792167148L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "发起合同方用户唯一标识")
private String unionId;
@ApiModelProperty(value = "订单号")
private String orderNo;
@ApiModelProperty(value = "合同编号")
private String contractNo;
@ApiModelProperty(value = "合同标题")
private String contractTitle;
@ApiModelProperty(value = "状态: 0、等待平台签署1、平台签署失败 2、等待(买家/供应商)签署(平台签署成功) 3、(买家/供应商)签署失败 4、(买家/供应商)签署成功、5、归档")
private Integer signStatus;
@ApiModelProperty(value = "签署完成日期")
private Date singerTime;
@ApiModelProperty(value = "平台签署失败备注信息")
private String aRemark;
@ApiModelProperty(value = "(买家/供应商)签署失败备注信息")
private String bRemark;
@ApiModelProperty(value = "平台签署交易号")
private String aTransactionId;
@ApiModelProperty(value = "(买家/供应商)签署交易号")
private String bTransactionId;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "归档日期")
private Date archiveDate;
}
package com.mmc.iuav.user.model.fdd.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @Author LW
* @date 2022/8/4 14:20
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SealInfoDTO implements Serializable {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "印章名称")
private String sealName;
@ApiModelProperty(value = "印章编号")
private String signatureId;
@ApiModelProperty(value = "印章状态: 0:默认 1:未启用")
private Integer sealStatus;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "印章图片")
private String sealUrl;
}
package com.mmc.iuav.user.model.fdd.dto; package com.mmc.iuav.user.model.fdd.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -20,12 +21,20 @@ import java.util.Date; ...@@ -20,12 +21,20 @@ import java.util.Date;
public class UserFddDTO implements Serializable { public class UserFddDTO implements Serializable {
private static final long serialVersionUID = -4952516407490131779L; private static final long serialVersionUID = -4952516407490131779L;
@ApiModelProperty(value = "id")
private Integer id; private Integer id;
@ApiModelProperty(value = "用户唯一标识")
private String unionId; private String unionId;
@ApiModelProperty(value = "客户id")
private String customerId; private String customerId;
@ApiModelProperty(value = "个人实名认证状态")
private Integer personVerifyStatus; private Integer personVerifyStatus;
@ApiModelProperty(value = "企业实名认证状态")
private Integer entVerifyStatus; private Integer entVerifyStatus;
@ApiModelProperty(value = "账号类型 1个人 2企业")
private Integer accountType; private Integer accountType;
@ApiModelProperty(value = "创建时间")
private Date createTime; private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime; private Date updateTime;
} }
package com.mmc.iuav.user.model.fdd.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author LW
* @date 2022/9/5 14:40
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ContractVO implements Serializable {
private static final long serialVersionUID = 570570471824495498L;
@ApiModelProperty(value = "合同地址")
@NotNull(message = "合同地址不能为空")
private String docUrl;
@ApiModelProperty(value = "订单编号")
@NotNull(message = "订单编号不能为空")
private String orderNo;
@ApiModelProperty(value = "合同标题")
@NotNull(message = "合同标题不能为空")
private String title;
@ApiModelProperty(value = "端口:0小程序 1后台")
private Integer port;
@ApiModelProperty(value = "unionId", hidden = true)
private String unionId;
}
package com.mmc.iuav.user.model.fdd.vo;
import com.mmc.iuav.group.Freeze;
import com.mmc.iuav.group.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author LW
* @date 2022/8/5 17:19
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SealInfoVO implements Serializable {
private static final long serialVersionUID = -1288955644357663835L;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "端口:0小程序 1后台")
private Integer port;
@ApiModelProperty(value = "用户唯一标识", hidden = true)
private String uId;
@ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = {Page.class, Freeze.class})
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(message = "每页显示数不能为空", groups = {Page.class, Freeze.class})
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.iuav.user.model.fdd.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author LW
* @date 2023/9/8 11:12
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SealVO implements Serializable {
private static final long serialVersionUID = -8686644521460467009L;
@ApiModelProperty(value = "印章路径")
private String sealUrl;
@ApiModelProperty(value = "印章名称")
private String sealName;
@ApiModelProperty(value = "用户id", hidden = true)
private String unionId;
@ApiModelProperty(value = "端口:0小程序 1后台")
private Integer port;
}
package com.mmc.iuav.user.model.vo.wallet;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/9/7 16:07
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PayUavWalletVO implements Serializable {
private static final long serialVersionUID = 1683979749411588941L;
@ApiModelProperty(value = "用户ID", required = true)
private Integer userAccountId;
@ApiModelProperty(value = "云享金")
private BigDecimal cashAmount;
@ApiModelProperty(value = "佣金")
private BigDecimal salaryAmount;
@ApiModelProperty(value = "订单状态 100:订单支付 1400:商城订单退款 1500:订单提成", required = true)
private Integer orderStatus;
@ApiModelProperty(value = "订单备注")
private String remark;
}
...@@ -18,6 +18,8 @@ public enum ResultEnum implements BaseErrorInfoInterface { ...@@ -18,6 +18,8 @@ public enum ResultEnum implements BaseErrorInfoInterface {
BUSINESS_LICENSE_CHECK_PARAMETER_ERROR("1002", "企业信息与营业执照信息不一致,请重新上传"), BUSINESS_LICENSE_CHECK_PARAMETER_ERROR("1002", "企业信息与营业执照信息不一致,请重新上传"),
THE_BRAND_NAME_CANNOT_BE_EMPTY("1003", "品牌名称不能为空"), THE_BRAND_NAME_CANNOT_BE_EMPTY("1003", "品牌名称不能为空"),
THE_BRAND_LOGO_CANNOT_BE_EMPTY("1004", "logo图标不能为空"), THE_BRAND_LOGO_CANNOT_BE_EMPTY("1004", "logo图标不能为空"),
BUSINESS_LICENSE_CHECK_ERROR("1005", "未进行(企业/个人)认证"),
BUSINESS_LICENSE_CHECK_NOT_PASS("1006", "(企业/个人)认证未通过"),
TAG_ALREADY_EXIST_ERROR("2001", "您已拥有该身份,不需要重复提交"), TAG_ALREADY_EXIST_ERROR("2001", "您已拥有该身份,不需要重复提交"),
TAG_APPLY_ALREADY_EXIST_ERROR("2002", "已存在申请记录,不可重复申请"), TAG_APPLY_ALREADY_EXIST_ERROR("2002", "已存在申请记录,不可重复申请"),
......
...@@ -3,12 +3,12 @@ package com.mmc.iuav.user.constant.fdd; ...@@ -3,12 +3,12 @@ package com.mmc.iuav.user.constant.fdd;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* author:zhenjie * @author:lw Date:2022/7/22
* Date:2022/7/22
* time:11:07 * time:11:07
*/ */
@Component @Component
public class FddConstant { public class FddConstant {
public static final String SUCCESS_CODE = "1000";
public static final String CODE = "code"; public static final String CODE = "code";
public static final String DATA = "data"; public static final String DATA = "data";
...@@ -26,11 +26,9 @@ public class FddConstant { ...@@ -26,11 +26,9 @@ public class FddConstant {
//企业实名认证同步回调 //企业实名认证同步回调
public static final String RETURN_E_CERT_RES = "fddservlet/fdd/returnECertRes"; public static final String RETURN_E_CERT_RES = "fddservlet/fdd/returnECertRes";
//小程序企业实名认证异步回调 //小程序企业实名认证异步回调
public static final String NOTIFY_E_CERT_RES = "fdd/notifyECertRes"; public static final String NOTIFY_E_CERT_RES = "fdd/auth/notifyECertRes";
//签署合同异步回调 //签署合同异步回调
public static final String NOTIFY_STAMP = "fddservlet/contract/notifyStamp"; public static final String NOTIFY_STAMP = "/fdd/contract/notifyStamp";
public static final String UAV_NOTIFY_STAMP = "fddservlet/uav/contract/notifyStamp";
public static final String APP_ID = "appId"; public static final String APP_ID = "appId";
...@@ -43,4 +41,10 @@ public class FddConstant { ...@@ -43,4 +41,10 @@ public class FddConstant {
public static final String SIGN = "sign"; public static final String SIGN = "sign";
public static final String UID_REGEX = "[-|_]"; public static final String UID_REGEX = "[-|_]";
public static final String YXF = "YXF";
public static final String SIGN_SUCCESS = "3000";
public static final String SIGN_FAIL = "3001";
} }
...@@ -131,4 +131,11 @@ public class CompanyController extends BaseController { ...@@ -131,4 +131,11 @@ public class CompanyController extends BaseController {
public List<CompanyInfoVO> listCompanyInfoByBUIds(@RequestBody List<Integer> backUserAccountIds) { public List<CompanyInfoVO> listCompanyInfoByBUIds(@RequestBody List<Integer> backUserAccountIds) {
return companyService.listCompanyInfoByBUIds(backUserAccountIds); return companyService.listCompanyInfoByBUIds(backUserAccountIds);
} }
@ApiOperation(value = "根据后台用户id获取公司管理员id")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("getManagerIdByBackUserId")
public ResultBody getManagerIdByBackUserId(@RequestParam Integer backUserAccountId) {
return companyService.getManagerIdByBackUserId(backUserAccountId);
}
} }
...@@ -119,7 +119,6 @@ public class PilotCertificationController extends BaseController { ...@@ -119,7 +119,6 @@ public class PilotCertificationController extends BaseController {
return certificationService.updateAuditStatus(param, this.getUserLoginInfoFromRedis(request)); return certificationService.updateAuditStatus(param, this.getUserLoginInfoFromRedis(request));
} }
@ApiOperation(value = "后台管理——日志列表————飞手执照及能力认证") @ApiOperation(value = "后台管理——日志列表————飞手执照及能力认证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = PilotCertificationDTO.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = PilotCertificationDTO.class)})
@PostMapping("/backPilotLogList") @PostMapping("/backPilotLogList")
...@@ -135,5 +134,5 @@ public class PilotCertificationController extends BaseController { ...@@ -135,5 +134,5 @@ public class PilotCertificationController extends BaseController {
public PilotCertificationInteriorDTO interiorDetailPilot(@RequestParam(value = "userAccountId", required = true) Integer userAccountId) { public PilotCertificationInteriorDTO interiorDetailPilot(@RequestParam(value = "userAccountId", required = true) Integer userAccountId) {
return certificationService.interiorDetailPilot(userAccountId); return certificationService.interiorDetailPilot(userAccountId);
} }
} }
package com.mmc.iuav.user.controller.fdd;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.controller.BaseController;
import com.mmc.iuav.user.model.fdd.dto.ContractInfoDTO;
import com.mmc.iuav.user.model.fdd.vo.ContractVO;
import com.mmc.iuav.user.service.fdd.ContractService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* @Author LW
* @date 2022/9/5 14:31
* 概要:
*/
@Api(tags = {"合同管理"})
@RestController
@RequestMapping("/fdd/contract/")
public class ContractController extends BaseController {
@Autowired
private ContractService contractService;
@ApiOperation(value = "上传合同")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/uploadContract")
public ResultBody uploadContract(@RequestBody ContractVO param, HttpServletRequest request) {
return contractService.uploadContract(param, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "合同预览")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/viewContract")
public ResultBody viewContract(@ApiParam(value = "合同编号") @RequestParam(value = "contractId") String contractId) {
return contractService.viewContract(contractId);
}
@ApiOperation(value = "下载合同")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/downloadContract")
public ResultBody downloadContract(@ApiParam(value = "合同编号") @RequestParam(value = "contractId") String contractId) {
return contractService.downloadContract(contractId);
}
@ApiOperation(value = "手动签署")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/stamp")
public ResultBody stamp(@ApiParam(value = "合同编号") @RequestParam(value = "contractId") String contractId,
@ApiParam(value = "小程序页面跳转地址") @RequestParam(value = "pages", required = false) String pages,
HttpServletRequest request, @ApiParam(value = "端口:0小程序 1后台") @RequestParam(value = "port") Integer port) {
return contractService.stamp(contractId, this.getUserLoginInfoFromRedis(request), pages, port);
}
@ApiOperation(value = "异步处理手动签署信息")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("notifyStamp")
@ApiIgnore
public ResultBody notifyStamp(@RequestParam Map<String, String> map) {
return contractService.notifyStamp(map);
}
@ApiOperation(value = "归档")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/file")
public ResultBody file(@ApiParam(value = "合同编号") @RequestParam(value = "contractId") String contractId,
HttpServletRequest request, @ApiParam(value = "端口:0小程序 1后台") @RequestParam(value = "port") Integer port) {
return contractService.file(contractId, this.getUserLoginInfoFromRedis(request), port);
}
@ApiOperation(value = "根据订单编号数组获取合同的信息")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ContractInfoDTO.class)})
@PostMapping("/listContractInfoByOrderNo")
public List<ContractInfoDTO> getContractInfo(@ApiParam(value = "订单编号list") @RequestBody List<String> orderNos) {
return contractService.listContractInfoByOrderNo(orderNos);
}
}
package com.mmc.iuav.user.controller.fdd;
/**
* @Author LW
* @date 2022/8/31 15:28
* 概要:
*/
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.controller.BaseController;
import com.mmc.iuav.user.model.fdd.dto.SealInfoDTO;
import com.mmc.iuav.user.model.fdd.vo.SealInfoVO;
import com.mmc.iuav.user.model.fdd.vo.SealVO;
import com.mmc.iuav.user.service.fdd.SealManageService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @Author LW
* @date 2022/8/3 10:22
* 概要:
*/
@Api(tags = {"印章管理模块-接口"})
@RequestMapping("/seal/")
@RestController
public class SealManageController extends BaseController {
@Autowired
private SealManageService sealManageService;
@ApiOperation(value = "上传印章")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/uploadSeal")
public ResultBody uploadSeal(@RequestBody SealVO sealVO, HttpServletRequest request) {
return sealManageService.uploadSeal(sealVO, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "当前用户印章列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = SealInfoDTO.class)})
@PostMapping("/getSealInfoList")
public ResultBody getSealInfoList(HttpServletRequest request, @RequestBody SealInfoVO param) {
return ResultBody.success(sealManageService.getSealInfoList(param, this.getUserLoginInfoFromRedis(request)));
}
@ApiOperation(value = "删除印章")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/removeSeal")
public ResultBody removeSeal(@ApiParam(value = "印章编号") @RequestParam(value = "signatureId") String signatureId,
@ApiParam(value = "端口 0小程序 1后台") Integer port,
HttpServletRequest request) {
return sealManageService.removeSeal(signatureId, port, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "设置默认签章")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/defaultSeal")
public ResultBody defaultSeal(@ApiParam(value = "印章编号") @RequestParam(value = "signatureId") String signatureId,
@ApiParam(value = "端口 0小程序 1后台") Integer port,
HttpServletRequest request) {
return sealManageService.defaultSeal(signatureId, port, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "查看印章信息")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/getSealInfo")
public ResultBody getSealInfo(@ApiParam(value = "印章编号") @RequestParam(value = "signatureId") String signatureId,
@ApiParam(value = "端口 0小程序 1后台") Integer port,
HttpServletRequest request) {
return sealManageService.getSealInfo(signatureId, port, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "编辑印章名称")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/editSealName")
public ResultBody editSealName(@ApiParam(value = "印章编号") @RequestParam(value = "signatureId") String signatureId,
@ApiParam(value = "端口 0小程序 1后台") Integer port,
@ApiParam(value = "要修改的印章名称") String sealName,
HttpServletRequest request) {
return sealManageService.editSealName(signatureId, port, this.getUserLoginInfoFromRedis(request), sealName);
}
}
...@@ -6,6 +6,7 @@ import com.mmc.iuav.user.model.fdd.dto.FddVerifyInfoDTO; ...@@ -6,6 +6,7 @@ import com.mmc.iuav.user.model.fdd.dto.FddVerifyInfoDTO;
import com.mmc.iuav.user.model.fdd.dto.UserFddDTO; import com.mmc.iuav.user.model.fdd.dto.UserFddDTO;
import com.mmc.iuav.user.model.fdd.resp.CompanyVerifyResp; import com.mmc.iuav.user.model.fdd.resp.CompanyVerifyResp;
import com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp; import com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp;
import com.mmc.iuav.user.service.fdd.FddService;
import com.mmc.iuav.user.service.fdd.UserFddAuthService; import com.mmc.iuav.user.service.fdd.UserFddAuthService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -19,14 +20,17 @@ import java.util.Map; ...@@ -19,14 +20,17 @@ import java.util.Map;
* @author:lw Date:2022/9/1 * @author:lw Date:2022/9/1
* time:15:44 * time:15:44
*/ */
@Api(tags = {"fdd用户认证" }) @Api(tags = {"fdd用户认证"})
@RestController @RestController
@RequestMapping("/fdd/") @RequestMapping("/fdd/auth/")
public class UserFddAuthController extends BaseController { public class UserFddAuthController extends BaseController {
@Autowired @Autowired
private UserFddAuthService userFddAuthService; private UserFddAuthService userFddAuthService;
@Autowired
private FddService fddService;
@ApiOperation(value = "注册法大大账号") @ApiOperation(value = "注册法大大账号")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = String.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = String.class)})
@ApiIgnore @ApiIgnore
...@@ -49,6 +53,14 @@ public class UserFddAuthController extends BaseController { ...@@ -49,6 +53,14 @@ public class UserFddAuthController extends BaseController {
return userFddAuthService.getCompanyVerifyUrl(port, this.getUserLoginInfoFromRedis(request)); return userFddAuthService.getCompanyVerifyUrl(port, this.getUserLoginInfoFromRedis(request));
} }
@ApiOperation(value = "申请实名证书")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = String.class)})
@GetMapping("getApplyCert")
@ApiIgnore
public String getApplyCert(@RequestParam String customerId, @RequestParam String transactionNo) {
return fddService.getApplyCert(customerId, transactionNo);
}
@ApiOperation(value = "异步处理企业实名认证") @ApiOperation(value = "异步处理企业实名认证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@ApiIgnore @ApiIgnore
......
...@@ -5,6 +5,7 @@ import com.mmc.iuav.user.controller.BaseController; ...@@ -5,6 +5,7 @@ import com.mmc.iuav.user.controller.BaseController;
import com.mmc.iuav.user.entity.wallet.UserBillingDetailVO; import com.mmc.iuav.user.entity.wallet.UserBillingDetailVO;
import com.mmc.iuav.user.model.dto.wallet.PayWalletDTO; import com.mmc.iuav.user.model.dto.wallet.PayWalletDTO;
import com.mmc.iuav.user.model.qo.wallet.WalletFlowQO; import com.mmc.iuav.user.model.qo.wallet.WalletFlowQO;
import com.mmc.iuav.user.model.vo.wallet.PayUavWalletVO;
import com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO; import com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO;
import com.mmc.iuav.user.model.vo.wallet.WalletFlowVO; import com.mmc.iuav.user.model.vo.wallet.WalletFlowVO;
import com.mmc.iuav.user.service.wallet.PayWalletService; import com.mmc.iuav.user.service.wallet.PayWalletService;
...@@ -77,4 +78,11 @@ public class PayWalletController extends BaseController { ...@@ -77,4 +78,11 @@ public class PayWalletController extends BaseController {
@ApiParam(value = "详情类型", required = true) @RequestParam String detailType) { @ApiParam(value = "详情类型", required = true) @RequestParam String detailType) {
return payWalletService.billingDetails(id, detailType); return payWalletService.billingDetails(id, detailType);
} }
@ApiOperation(value = "商城订单钱包流水加扣记录", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("feignPayUavWallet")
public ResultBody payUavWallet(@RequestBody PayUavWalletVO payUavWalletVO) {
return payWalletService.payUavWallet(payUavWalletVO);
}
} }
...@@ -201,4 +201,8 @@ public interface CompanyDao { ...@@ -201,4 +201,8 @@ public interface CompanyDao {
List<CompanyInfoDO> listCompanyInfoByIds(@Param("ids") List<Integer> ids); List<CompanyInfoDO> listCompanyInfoByIds(@Param("ids") List<Integer> ids);
void deleteCompanyInfoById(Integer id); void deleteCompanyInfoById(Integer id);
CompanyMemberDO getManagerByCompanyId(Integer companyInfoId);
CompanyBackUserDO getCompanyBackUserByBackUserId(Integer backUserAccountId);
} }
package com.mmc.iuav.user.dao.fdd;
import com.mmc.iuav.user.entity.fdd.ContractInfoDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author LW
* @date 2022/9/5 14:47
* 概要:
*/
@Mapper
public interface ContractDao {
/**
* 新增无人机城合同信息
*
* @param uavContractInfoDO
*/
void insertUavContractInfo(ContractInfoDO uavContractInfoDO);
ContractInfoDO contractInfoByOrderNo(String orderNo, String contractNo);
void deleteContractInfo(String orderNo);
void updateContractInfo(ContractInfoDO updateContract);
List<ContractInfoDO> listContractInfoByOrderNo(@Param(value = "orderNo") List<String> orderNo);
}
package com.mmc.iuav.user.dao.fdd;
import com.mmc.iuav.user.entity.fdd.SealInfoDO;
import com.mmc.iuav.user.model.fdd.vo.SealInfoVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Author LW
* @date 2023/9/8 14:36
* 概要:
*/
@Mapper
public interface SealManageDao {
void insertSealInfo(SealInfoDO sealInfoDO);
int countSealInfo(SealInfoVO param);
List<SealInfoDO> getSealInfoList(SealInfoVO param);
void deletedSealInfo(String signatureId);
List<SealInfoDO> getSealInfoListByUnionId(String unionId);
void updateSealStatusById(List<Integer> sealIds);
void updateSealStatusBySignatureId(String signatureId);
void updateSealName(String unionId, String signatureId, String sealName);
}
package com.mmc.iuav.user.entity.fdd;
import com.mmc.iuav.user.model.fdd.dto.ContractInfoDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (ContractInfoDO)实体类
*
* @author makejava
* @since 2023-09-07 10:14:08
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ContractInfoDO implements Serializable {
private static final long serialVersionUID = -42558889792167148L;
private Integer id;
/**
* 发起合同方用户id
*/
private String unionId;
/**
* 订单号
*/
private String orderNo;
/**
* 合同编号
*/
private String contractNo;
/**
* 合同标题
*/
private String contractTitle;
/**
* 状态: 0、等待平台签署1、平台签署失败 2、等待(买家/供应商)签署(平台签署成功) 3、(买家/供应商)签署失败 4、(买家/供应商)签署成功、5、归档
*/
private Integer signStatus;
/**
* 签署完成日期
*/
private Date singerTime;
/**
* 平台签署失败备注信息
*/
private String aRemark;
/**
* (买家/供应商)签署失败备注信息
*/
private String bRemark;
/**
* 平台签署交易号
*/
private String aTransactionId;
/**
* (买家/供应商)签署交易号
*/
private String bTransactionId;
private Date createTime;
private Date updateTime;
/**
* 归档日期
*/
private Date archiveDate;
public ContractInfoDTO buildContractInfoDTO() {
return ContractInfoDTO.builder().id(this.id).unionId(this.unionId).orderNo(this.orderNo).contractNo(this.contractNo).contractTitle(this.contractTitle)
.signStatus(this.signStatus).singerTime(this.singerTime).aRemark(this.aRemark).bRemark(this.bRemark).aTransactionId(this.aTransactionId).bTransactionId(this.bTransactionId)
.createTime(this.createTime).updateTime(this.updateTime).archiveDate(this.archiveDate).build();
}
}
package com.mmc.iuav.user.entity.fdd;
import com.mmc.iuav.user.model.fdd.dto.SealInfoDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (SealInfoDO)实体类
*
* @author makejava
* @since 2023-09-08 14:30:13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SealInfoDO implements Serializable {
private static final long serialVersionUID = -88451609760389058L;
private Integer id;
/**
* 印章名称
*/
private String sealName;
/**
* 印章编号
*/
private String signatureId;
/**
* 用户唯一标识
*/
private String unionId;
/**
* 印章状态:0未使用 1使用中
*/
private Integer sealStatus;
/**
* 印章图片
*/
private String sealUrl;
private Date createTime;
private Date updateTime;
public SealInfoDTO buildSealInfoDTO() {
return SealInfoDTO.builder().id(this.id).sealStatus(this.sealStatus).sealName(this.sealName)
.signatureId(this.signatureId).createTime(this.createTime).sealUrl(this.sealUrl).build();
}
}
...@@ -16,7 +16,9 @@ public enum PayMethodEnums { ...@@ -16,7 +16,9 @@ public enum PayMethodEnums {
MODIFY_THE_ORDER(800, "修改订单金额状态(大于)"), MODIFY_THE_ORDER(800, "修改订单金额状态(大于)"),
FLYING_HAND_NOT_CONFIRMED_GT(900, "飞手未确认修改金额大于原订单状态"), FLYING_HAND_NOT_CONFIRMED_GT(900, "飞手未确认修改金额大于原订单状态"),
FLYING_HAND_CONFIRM_LT(1000, "飞手确认修改金额小于原订单状态"), FLYING_HAND_CONFIRM_LT(1000, "飞手确认修改金额小于原订单状态"),
USER_TOP_UP(1100, "充值"); USER_TOP_UP(1100, "充值"),
PAY_UAV_ORDER_REFUND(1400, "商城订单退款"),
ORDER_INCOME(1500, "订单收益");
PayMethodEnums(Integer code, String method) { PayMethodEnums(Integer code, String method) {
this.code = code; this.code = code;
......
...@@ -168,4 +168,6 @@ public interface CompanyService { ...@@ -168,4 +168,6 @@ public interface CompanyService {
List<CompanyInfoVO> listCompanyInfoByBUIds(List<Integer> backUserAccountIds); List<CompanyInfoVO> listCompanyInfoByBUIds(List<Integer> backUserAccountIds);
void deleteCompanyInfoById(Integer id); void deleteCompanyInfoById(Integer id);
ResultBody getManagerIdByBackUserId(Integer backUserAccountId);
} }
package com.mmc.iuav.user.service.fdd;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.fdd.dto.ContractInfoDTO;
import com.mmc.iuav.user.model.fdd.vo.ContractVO;
import java.util.List;
import java.util.Map;
/**
* @Author LW
* @date 2022/9/5 14:38
* 概要:
*/
public interface ContractService {
/**
* 上传合同
*
* @param param
* @param id
* @return
*/
ResultBody uploadContract(ContractVO param, LoginSuccessDTO loginSuccessDTO);
ResultBody viewContract(String contractId);
ResultBody downloadContract(String contractId);
ResultBody stamp(String contractId, LoginSuccessDTO loginSuccessDTO, String pages, Integer port);
/**
* 异步回调
*
* @param map
* @return
*/
ResultBody notifyStamp(Map<String, String> map);
ResultBody file(String contractId, LoginSuccessDTO loginSuccessDTO, Integer port);
List<ContractInfoDTO> listContractInfoByOrderNo(List<String> orderNos);
}
package com.mmc.iuav.user.service.fdd;
import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.fdd.vo.SealInfoVO;
import com.mmc.iuav.user.model.fdd.vo.SealVO;
/**
* @Author LW
* @date 2022/8/31 17:29
* 概要:
*/
public interface SealManageService {
ResultBody uploadSeal(SealVO sealVO, LoginSuccessDTO loginSuccessDTO);
PageResult getSealInfoList(SealInfoVO param, LoginSuccessDTO loginSuccessDTO);
ResultBody removeSeal(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO);
ResultBody defaultSeal(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO);
ResultBody getSealInfo(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO);
ResultBody editSealName(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO, String sealName);
ResultBody checkAuthStatus(Integer port, LoginSuccessDTO loginSuccessDTO);
}
...@@ -29,5 +29,6 @@ public interface UserFddAuthService { ...@@ -29,5 +29,6 @@ public interface UserFddAuthService {
ResultBody getFileByUuid(String uuid, String docType); ResultBody getFileByUuid(String uuid, String docType);
// List<UserFddDTO> feignGetAppUserFddInfo(List<String> unionId); // List<UserFddDTO> feignGetAppUserFddInfo(List<String> unionId);
} }
package com.mmc.iuav.user.service.fdd.impl;
import com.alibaba.fastjson.JSONObject;
import com.fadada.sdk.base.client.FddBaseClient;
import com.fadada.sdk.base.model.req.*;
import com.fadada.sdk.utils.crypt.FddEncryptTool;
import com.mmc.iuav.general.CodeUtil;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.response.ResultEnum;
import com.mmc.iuav.user.constant.fdd.FddConnectConstant;
import com.mmc.iuav.user.constant.fdd.FddConstant;
import com.mmc.iuav.user.dao.fdd.ContractDao;
import com.mmc.iuav.user.entity.fdd.ContractInfoDO;
import com.mmc.iuav.user.entity.fdd.UserFddDO;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.fdd.dto.ContractInfoDTO;
import com.mmc.iuav.user.model.fdd.vo.ContractVO;
import com.mmc.iuav.user.service.fdd.ContractService;
import com.mmc.iuav.user.service.fdd.SealManageService;
import com.mmc.iuav.user.util.TDateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* @Author LW
* @date 2022/9/5 14:38
* 概要:
*/
@Service
@Slf4j
public class ContractServiceImpl implements ContractService {
@Resource
ContractDao contractDao;
@Resource
SealManageService sealManageService;
/**
* 上传合同
*
* @param param
* @return
*/
@Override
public ResultBody uploadContract(ContractVO param, LoginSuccessDTO loginSuccessDTO) {
ResultBody resultBody = sealManageService.checkAuthStatus(param.getPort(), loginSuccessDTO);
UserFddDO userFddDO = (UserFddDO) resultBody.getResult();
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// 查询这个订单号之前有没有上传过合同有的话就删除
ContractInfoDO contractInfoDO = contractDao.contractInfoByOrderNo(param.getOrderNo(), null);
if (contractInfoDO != null) {
// 把合同删除
contractDao.deleteContractInfo(param.getOrderNo());
}
//自定义合同id 合同编号设置规则:YXF + 年份 + 8位随机数
String contractId = FddConstant.YXF + TDateUtil.getCurrentYear() + CodeUtil.getRandomNum(8);
// 调用法大大接口
UploadDocsParams params = new UploadDocsParams();
// 合同编号
params.setContractId(contractId);
//合同标题
params.setDocTitle(param.getTitle());
//PDF文档和下载地址二选一
//合同公网下载地址
params.setDocUrl(param.getDocUrl());
//合同类型 目前仅支持pdf格式
params.setDocType(".pdf");
String result = baseClient.invokeUploadDocs(params);
String code = JSONObject.parseObject(result).getString(FddConstant.CODE);
String msg = JSONObject.parseObject(result).getString(FddConstant.MSG);
if (FddConstant.SUCCESS_CODE.equals(code)) {
// 保存合同信息到数据库
ContractInfoDO contractInfo = new ContractInfoDO();
contractInfo.setContractTitle(param.getTitle());
contractInfo.setOrderNo(param.getOrderNo());
contractInfo.setContractNo(contractId);
contractInfo.setUnionId(userFddDO.getUnionId());
contractDao.insertUavContractInfo(contractInfo);
return ResultBody.success(contractInfo);
} else {
return ResultBody.error(msg);
}
}
@Override
public ResultBody viewContract(String contractId) {
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
ViewPdfURLParams params = new ViewPdfURLParams();
//此处传入调用上传或填充合同接口成功时定义的合同编号
params.setContractId(contractId);
String result = baseClient.invokeViewPdfURL(params);
String base64 = new String(FddEncryptTool.Base64Encode(result.getBytes())).trim();
return ResultBody.success(base64);
}
@Override
public ResultBody downloadContract(String contractId) {
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
DownloadPdfParams params = new DownloadPdfParams();
// 合同编号
params.setContractId(contractId);
//如下,传setPath参数可以直接保存文件到本地,不传则返回url
// params.setPath(""); // 指定路径,如:D:\\pdf\\uuidNew.pdf
String result = baseClient.invokeDownloadPdf(params);
String base64 = new String(FddEncryptTool.Base64Encode(result.getBytes())).trim();
return ResultBody.success(base64);
}
@Override
public ResultBody stamp(String contractId, LoginSuccessDTO loginSuccessDTO, String pages, Integer port) {
ResultBody resultBody = sealManageService.checkAuthStatus(port, loginSuccessDTO);
UserFddDO userFddDO = (UserFddDO) resultBody.getResult();
// 获取合同信息
ContractInfoDO contractInfo = contractDao.contractInfoByOrderNo(null, contractId);
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
ExtSignParams params = new ExtSignParams();
String transactionId = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
//平台自定义唯一交易号
params.setTransactionId(transactionId);
//此处传入调用上传或填充合同接口成功时定义的合同编号
params.setContractId(contractId);
params.setCustomerId(userFddDO.getCustomerId());
params.setDocTitle(contractInfo.getContractTitle());
if (pages != null) {
params.setOpenEnvironment("1");
params.setReturnUrl(pages);
} else {
params.setOpenEnvironment("0");
}
params.setNotifyUrl(FddConnectConstant.MMC_URL + FddConstant.NOTIFY_STAMP);
if (port.equals(0) && userFddDO.getAccountType().equals(1)) {
params.setMobileSignType("2");
}
String result = baseClient.invokeExtSign(params);
// 将链接转成base64返回
String base64 = new String(FddEncryptTool.Base64Encode(result.getBytes())).trim();
ContractInfoDO updateContract = new ContractInfoDO();
updateContract.setContractNo(contractId);
if (contractInfo.getUnionId().equals(userFddDO.getUnionId())) {
updateContract.setATransactionId(transactionId);
} else {
updateContract.setBTransactionId(transactionId);
}
contractDao.updateContractInfo(updateContract);
return ResultBody.success(base64);
}
@Override
public ResultBody notifyStamp(Map<String, String> map) {
log.info("合同签署异步回调返回数据,{}", map.toString());
String transactionId = map.get("transaction_id");// 交易号
String contractId = map.get("contract_id");// 合同编号
String resultCode = map.get("result_code");// 返回的code码
String resultDesc = map.get("result_desc");// 签章结果描述信息
String timestamp = map.get("timestamp");// 时间戳
String msgDigest = map.get("msg_digest");// 摘要
String sha1 = FddEncryptTool.sha1(FddConnectConstant.APP_KEY + transactionId);
try {
String md5 = FddEncryptTool.md5Digest(timestamp);
String outSha1 = FddEncryptTool.sha1(FddConnectConstant.APP_ID + md5 + sha1);
String base64 = new String(FddEncryptTool.Base64Encode(outSha1.getBytes())).trim();
if (!base64.equals(msgDigest)) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
} catch (Exception e) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
// 获取合同信息
ContractInfoDO contractInfoDO = contractDao.contractInfoByOrderNo(null, contractId);
ContractInfoDO updateSignStatus = new ContractInfoDO();
updateSignStatus.setContractNo(contractId);
if (contractInfoDO.getSignStatus() == 0 && FddConstant.SIGN_SUCCESS.equals(resultCode) && contractInfoDO.getATransactionId().equals(transactionId)) {
// 甲方公司签章成功
updateSignStatus.setSignStatus(2);
updateSignStatus.setARemark(resultDesc);
} else if (contractInfoDO.getSignStatus() == 0 && FddConstant.SIGN_FAIL.equals(resultCode) && contractInfoDO.getATransactionId().equals(transactionId)) {
// 甲方公司签章失败
updateSignStatus.setSignStatus(1);
updateSignStatus.setBRemark(resultDesc);
} else if (contractInfoDO.getSignStatus() == 2 && FddConstant.SIGN_SUCCESS.equals(resultCode) && contractInfoDO.getBTransactionId().equals(transactionId)) {
// 乙方公司签章成功
updateSignStatus.setSignStatus(4);
updateSignStatus.setBRemark(resultDesc);
updateSignStatus.setSingerTime(new Date());
} else if (contractInfoDO.getSignStatus() == 2 && FddConstant.SIGN_FAIL.equals(resultCode) && contractInfoDO.getBTransactionId().equals(transactionId)) {
// 乙方公司签章失败
updateSignStatus.setSignStatus(3);
updateSignStatus.setBRemark(resultDesc);
}
contractDao.updateContractInfo(updateSignStatus);
return ResultBody.success();
}
@Override
public ResultBody file(String contractId, LoginSuccessDTO loginSuccessDTO, Integer port) {
sealManageService.checkAuthStatus(port, loginSuccessDTO);
// 判断该合同状态是否可以归档
ContractInfoDO contractInfoDO = contractDao.contractInfoByOrderNo(null, contractId);
if (!contractInfoDO.getSignStatus().equals(4)) {
return ResultBody.error("当前状态不可进行归档操作!");
}
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
ContractFillingParams params = new ContractFillingParams();
//此处传入调用上传或填充合同接口成功时定义的合同编号
params.setContractId(contractId);
String result = baseClient.invokeContractFilling(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS_CODE)) {
return ResultBody.error(JSONObject.parseObject(result).getString(FddConstant.MSG));
}
ContractInfoDO contractDetailDO = new ContractInfoDO();
contractDetailDO.setContractNo(contractId);
contractDetailDO.setSignStatus(5);
contractDetailDO.setArchiveDate(new Date());
contractDao.updateContractInfo(contractDetailDO);
return ResultBody.success(JSONObject.parseObject(result));
}
@Override
public List<ContractInfoDTO> listContractInfoByOrderNo(List<String> orderNos) {
// 根据订单编号获取合同信息
List<ContractInfoDO> contractInfoDOList = contractDao.listContractInfoByOrderNo(orderNos);
return contractInfoDOList == null ? null : contractInfoDOList.stream().map(ContractInfoDO::buildContractInfoDTO).collect(Collectors.toList());
}
}
package com.mmc.iuav.user.service.fdd.impl;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.fadada.sdk.base.client.FddBaseClient;
import com.fadada.sdk.base.model.req.AddSignatureParams;
import com.fadada.sdk.extra.client.FddExtraClient;
import com.fadada.sdk.extra.model.req.DefaultSignatureParams;
import com.fadada.sdk.extra.model.req.QuerySignatureParams;
import com.fadada.sdk.extra.model.req.RemoveSignatureParams;
import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.response.ResultEnum;
import com.mmc.iuav.user.constant.fdd.FddConnectConstant;
import com.mmc.iuav.user.constant.fdd.FddConstant;
import com.mmc.iuav.user.dao.UserServiceDao;
import com.mmc.iuav.user.dao.fdd.SealManageDao;
import com.mmc.iuav.user.dao.fdd.UserFddAuthDao;
import com.mmc.iuav.user.entity.UserAccountDO;
import com.mmc.iuav.user.entity.fdd.SealInfoDO;
import com.mmc.iuav.user.entity.fdd.UserFddDO;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.fdd.dto.SealInfoDTO;
import com.mmc.iuav.user.model.fdd.seal.SealDetail;
import com.mmc.iuav.user.model.fdd.vo.SealInfoVO;
import com.mmc.iuav.user.model.fdd.vo.SealVO;
import com.mmc.iuav.user.service.fdd.SealManageService;
import com.mmc.iuav.user.service.fdd.UserFddAuthService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author LW
* @date 2022/8/31 17:29
* 概要:
*/
@Service
public class SealManageServiceImpl implements SealManageService {
@Resource
UserServiceDao userServiceDao;
@Resource
UserFddAuthService userFddAuthService;
@Resource
UserFddAuthDao userFddAuthDao;
@Resource
SealManageDao sealManageDao;
@Override
public ResultBody uploadSeal(SealVO sealVO, LoginSuccessDTO loginSuccessDTO) {
ResultBody resultBody = this.checkAuthStatus(sealVO.getPort(), loginSuccessDTO);
UserFddDO userFddInfo = (UserFddDO) resultBody.getResult();
sealVO.setUnionId(userFddInfo.getUnionId());
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
AddSignatureParams params = new AddSignatureParams();
//客户编号
params.setCustomerId(userFddInfo.getCustomerId());
//下面章图片base64、签章图片、图片公网地址三选一
// params.setSignatureImgBase64(""); //签章图片base64
// params.setFile(new File("D:\\sign.png")); //签章图片
//签章图片公网地址
params.setImgUrl(sealVO.getSealUrl());
String result = baseClient.invokeAddSignature(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return ResultBody.error(JSONObject.parseObject(result).getString(FddConstant.MSG));
} else {
// 根据当前用户查询印章列表
getSealInfoListByUnionId(sealVO.getUnionId());
// 获取返回的印章编号
String dataStr = JSONObject.parseObject(result).getString(FddConstant.DATA);
String signatureId = JSONObject.parseObject(dataStr).getString(FddConstant.SIGNATURE_ID);
SealInfoDO sealInfoDO = new SealInfoDO();
sealInfoDO.setSealName(sealVO.getSealName());
sealInfoDO.setSignatureId(signatureId);
sealInfoDO.setUnionId(sealVO.getUnionId());
sealInfoDO.setSealUrl(sealVO.getSealUrl());
// 新增印章信息
sealManageDao.insertSealInfo(sealInfoDO);
return ResultBody.success();
}
}
private void getSealInfoListByUnionId(String unionId) {
List<SealInfoDO> sealInfoList = sealManageDao.getSealInfoListByUnionId(unionId);
// 判断是否有状态是默认的章(默认:0 非默认:1)
List<Integer> sealIds = sealInfoList.stream()
.filter(d -> d.getSealStatus() == 1)
.map(SealInfoDO::getId).collect(Collectors.toList());
// 将默认章的状态进行更换
if (sealIds.size() > 0) {
sealManageDao.updateSealStatusById(sealIds);
}
}
@Override
public PageResult getSealInfoList(SealInfoVO param, LoginSuccessDTO loginSuccessDTO) {
if (param.getPort().equals(0)) {
UserAccountDO userInfo = userServiceDao.getUserAccountById(loginSuccessDTO.getUserAccountId());
param.setUId(userFddAuthService.replaceUnableString(userInfo.getUnionId()));
} else {
param.setUId(loginSuccessDTO.getUserAccountId().toString());
}
int count = sealManageDao.countSealInfo(param);
if (count == 0) {
return PageResult.buildPage(param.getPageNo(), param.getPageSize(), count);
}
Integer pageNo = param.getPageNo();
param.buildCurrentPage();
// 获取印章列表信息
List<SealInfoDO> sealInfoList = sealManageDao.getSealInfoList(param);
List<SealInfoDTO> list = sealInfoList.stream().map(SealInfoDO::buildSealInfoDTO).collect(Collectors.toList());
return PageResult.buildPage(pageNo, param.getPageSize(), count, list);
}
@Override
public ResultBody removeSeal(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO) {
ResultBody resultBody = checkAuthStatus(port, loginSuccessDTO);
UserFddDO userFddInfo = (UserFddDO) resultBody.getResult();
// 调用法大大删除印章接口
FddExtraClient client = new FddExtraClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
RemoveSignatureParams params = new RemoveSignatureParams();
params.setCustomerId(userFddInfo.getCustomerId());
params.setSignatureId(signatureId);
String result = client.invokeRemoveSignature(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return ResultBody.error(JSONObject.parseObject(result).getString(FddConstant.MSG));
}
sealManageDao.deletedSealInfo(signatureId);
return ResultBody.success();
}
@Override
@Transactional
public ResultBody checkAuthStatus(Integer port, LoginSuccessDTO loginSuccessDTO) {
String uid;
if (port.equals(0)) {
UserAccountDO userInfo = userServiceDao.getUserAccountById(loginSuccessDTO.getUserAccountId());
uid = userFddAuthService.replaceUnableString(userInfo.getUnionId());
} else {
uid = loginSuccessDTO.getUserAccountId().toString();
}
// 获取用户法大大的(实名/企业)认证信息
UserFddDO userFddInfo = userFddAuthDao.getAppUserFddInfo(uid);
if (userFddInfo == null) {
return ResultBody.error(ResultEnum.BUSINESS_LICENSE_CHECK_ERROR);
}
boolean isPersonVerified = userFddInfo.getAccountType().equals(1) && userFddInfo.getPersonVerifyStatus().equals(2);
boolean isEntVerified = userFddInfo.getAccountType().equals(2) && userFddInfo.getEntVerifyStatus().equals(4);
if (!isPersonVerified && !isEntVerified) {
return ResultBody.error(ResultEnum.BUSINESS_LICENSE_CHECK_NOT_PASS);
}
return ResultBody.success(userFddInfo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ResultBody defaultSeal(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO) {
ResultBody resultBody = checkAuthStatus(port, loginSuccessDTO);
UserFddDO userFddInfo = (UserFddDO) resultBody.getResult();
FddExtraClient client = new FddExtraClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
DefaultSignatureParams params = new DefaultSignatureParams();
params.setCustomerId(userFddInfo.getCustomerId());
params.setSignatureId(signatureId);
String result = client.invokeDefaultSignature(params);
// 获取印章列表
getSealInfoListByUnionId(userFddInfo.getUnionId());
sealManageDao.updateSealStatusBySignatureId(signatureId);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
// 如果失败,手动回滚修改的数据
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(JSONObject.parseObject(result).getString(FddConstant.MSG));
}
return ResultBody.success();
}
@Override
public ResultBody getSealInfo(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO) {
ResultBody resultBody = checkAuthStatus(port, loginSuccessDTO);
UserFddDO userFddInfo = (UserFddDO) resultBody.getResult();
FddExtraClient client = new FddExtraClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
QuerySignatureParams params = new QuerySignatureParams();
params.setCustomerId(userFddInfo.getCustomerId());
params.setSignatureId(signatureId);
String result = client.invokeQuerySignature(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return ResultBody.error(JSONObject.parseObject(result).getString(FddConstant.MSG));
}
String dataStr = JSONObject.parseObject(result).getString(FddConstant.DATA);
return ResultBody.success(this.buildSealDetail(dataStr));
}
/**
* 构建印章信息对象
*/
public SealDetail buildSealDetail(String result) {
JSONObject jsonObject = JSONArray.parseArray(result).getJSONObject(0);
SealDetail sealDetail = new SealDetail();
sealDetail.setSignatureImg(jsonObject.getString("signature_img_base64"));
sealDetail.setSignatureId(jsonObject.getString("signature_id"));
sealDetail.setSignatureScope(jsonObject.getInteger("signature_scope"));
sealDetail.setSignatureType(jsonObject.getString("signature_type"));
sealDetail.setSignatureSource(jsonObject.getString("signature_source"));
return sealDetail;
}
@Override
public ResultBody editSealName(String signatureId, Integer port, LoginSuccessDTO loginSuccessDTO, String sealName) {
ResultBody resultBody = checkAuthStatus(port, loginSuccessDTO);
UserFddDO userFddInfo = (UserFddDO) resultBody.getResult();
sealManageDao.updateSealName(userFddInfo.getUnionId(), signatureId, sealName);
return ResultBody.success();
}
}
...@@ -145,6 +145,7 @@ public class BackUserAccountServiceImpl implements BackUserAccountService { ...@@ -145,6 +145,7 @@ public class BackUserAccountServiceImpl implements BackUserAccountService {
return ResultBody.success(); return ResultBody.success();
} }
@Transactional
@Override @Override
public ResultBody disableBAccount(Integer accountId, LoginSuccessDTO loginSuccessDTO) { public ResultBody disableBAccount(Integer accountId, LoginSuccessDTO loginSuccessDTO) {
CompanyInfoVO companyInfoVO = companyService.getCompanyInfoByBackUserAccountId(accountId); CompanyInfoVO companyInfoVO = companyService.getCompanyInfoByBackUserAccountId(accountId);
......
...@@ -259,4 +259,14 @@ public class CompanyServiceImpl implements CompanyService { ...@@ -259,4 +259,14 @@ public class CompanyServiceImpl implements CompanyService {
public void deleteCompanyInfoById(Integer id) { public void deleteCompanyInfoById(Integer id) {
companyDao.deleteCompanyInfoById(id); companyDao.deleteCompanyInfoById(id);
} }
@Override
public ResultBody getManagerIdByBackUserId(Integer backUserAccountId) {
CompanyBackUserDO companyBackUserDO = companyDao.getCompanyBackUserByBackUserId(backUserAccountId);
CompanyMemberDO companyMemberDO = companyDao.getManagerByCompanyId(companyBackUserDO.getCompanyInfoId());
if (companyMemberDO == null) {
return ResultBody.error("无管理员");
}
return ResultBody.success(companyMemberDO.getUserAccountId());
}
} }
...@@ -33,6 +33,7 @@ import org.apache.commons.lang.StringUtils; ...@@ -33,6 +33,7 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
...@@ -376,9 +377,9 @@ public class UserAccountServiceImpl implements UserAccountService { ...@@ -376,9 +377,9 @@ public class UserAccountServiceImpl implements UserAccountService {
@Autowired @Autowired
private CompanyDao companyDao; private CompanyDao companyDao;
@Transactional
@Override @Override
public ResultBody disableAppAccount(Integer userAccountId) { public ResultBody disableAppAccount(Integer userAccountId) {
userServiceDao.disableUserAccount(CodeUtil.removeUserAccount(), userAccountId);
UserAccountVO userAccountVO = new UserAccountVO(); UserAccountVO userAccountVO = new UserAccountVO();
userAccountVO.setId(userAccountId); userAccountVO.setId(userAccountId);
userAccountVO.setDeleted(1); userAccountVO.setDeleted(1);
...@@ -389,10 +390,12 @@ public class UserAccountServiceImpl implements UserAccountService { ...@@ -389,10 +390,12 @@ public class UserAccountServiceImpl implements UserAccountService {
if (companyInfoDO != null) { if (companyInfoDO != null) {
int members = companyDao.countCompanyMembers(companyInfoDO.getId()); int members = companyDao.countCompanyMembers(companyInfoDO.getId());
if (members > 1 && companyInfoDO.getLeader().equals(1)) { if (members > 1 && companyInfoDO.getLeader().equals(1)) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error("该用户是单位管理员,暂时不能删除"); return ResultBody.error("该用户是单位管理员,暂时不能删除");
} }
companyDao.unbindCompanyMember(userAccountId, companyInfoDO.getId()); companyDao.unbindCompanyMember(userAccountId, companyInfoDO.getId());
} }
userServiceDao.disableUserAccount(CodeUtil.removeUserAccount(), userAccountId);
mqProducer.sentUserInfoChangedMsg(userAccountVO); mqProducer.sentUserInfoChangedMsg(userAccountVO);
return ResultBody.success(); return ResultBody.success();
} }
......
...@@ -2,6 +2,7 @@ package com.mmc.iuav.user.service.wallet; ...@@ -2,6 +2,7 @@ package com.mmc.iuav.user.service.wallet;
import com.mmc.iuav.response.ResultBody; import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.qo.wallet.WalletFlowQO; import com.mmc.iuav.user.model.qo.wallet.WalletFlowQO;
import com.mmc.iuav.user.model.vo.wallet.PayUavWalletVO;
import com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO; import com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO;
import com.mmc.iuav.user.model.vo.wallet.WalletFlowVO; import com.mmc.iuav.user.model.vo.wallet.WalletFlowVO;
...@@ -22,4 +23,7 @@ public interface PayWalletService { ...@@ -22,4 +23,7 @@ public interface PayWalletService {
ResultBody customerBillingDetail(Integer userAccountId, WalletFlowQO walletFlowQO); ResultBody customerBillingDetail(Integer userAccountId, WalletFlowQO walletFlowQO);
ResultBody billingDetails(Integer id, String detailType); ResultBody billingDetails(Integer id, String detailType);
ResultBody payUavWallet(PayUavWalletVO payUavWalletVO);
} }
...@@ -15,10 +15,7 @@ import com.mmc.iuav.user.enums.PayMethodEnums; ...@@ -15,10 +15,7 @@ import com.mmc.iuav.user.enums.PayMethodEnums;
import com.mmc.iuav.user.model.dto.wallet.PayWalletDTO; import com.mmc.iuav.user.model.dto.wallet.PayWalletDTO;
import com.mmc.iuav.user.model.qo.wallet.WalletFlowQO; import com.mmc.iuav.user.model.qo.wallet.WalletFlowQO;
import com.mmc.iuav.user.model.vo.WithdrawalInfoVO; import com.mmc.iuav.user.model.vo.WithdrawalInfoVO;
import com.mmc.iuav.user.model.vo.wallet.FlyerWalletFlowVO; import com.mmc.iuav.user.model.vo.wallet.*;
import com.mmc.iuav.user.model.vo.wallet.PublisherWalletFlowVO;
import com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO;
import com.mmc.iuav.user.model.vo.wallet.WalletFlowVO;
import com.mmc.iuav.user.service.wallet.PayWalletService; import com.mmc.iuav.user.service.wallet.PayWalletService;
import com.mmc.iuav.user.util.TDateUtil; import com.mmc.iuav.user.util.TDateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -111,25 +108,7 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -111,25 +108,7 @@ public class PayWalletServiceImpl implements PayWalletService {
} }
} else if (publisherWalletFlowVO != null && publisherWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.CANCEL_ORDER_TAKING.getCode())) { } else if (publisherWalletFlowVO != null && publisherWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.CANCEL_ORDER_TAKING.getCode())) {
// 等于200时 发布方取消订单,无飞手接单 // 等于200时 发布方取消订单,无飞手接单
PayWalletDO publishUpdatePayWallet = new PayWalletDO(); return publishCancelOrder(publisherWalletFlowVO, publishWallet, 200);
publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId());
publishUpdatePayWallet.setPid(publishWallet.getPid());
publishUpdatePayWallet.setCashAmt(publishWallet.getCashAmt().add(publisherWalletFlowVO.getCashAmount()));
publishUpdatePayWallet.setCashFreeze(publishWallet.getCashFreeze().add(publisherWalletFlowVO.getTopYxjAmount())
.add(publisherWalletFlowVO.getUrgentYxjAmount()).subtract(publisherWalletFlowVO.getCashAmount()));
publishUpdatePayWallet.setSalaryAmt(publishWallet.getSalaryAmt().add(publisherWalletFlowVO.getSalaryAmount()));
publishUpdatePayWallet.setSalaryFreeze(publishWallet.getSalaryFreeze().add(publisherWalletFlowVO.getTopSalaryAmount())
.add(publisherWalletFlowVO.getUrgentSalaryAmount()).subtract(publisherWalletFlowVO.getSalaryAmount()));
int i = payWalletDao.updatePayWallet(publishUpdatePayWallet);
if ((i > 0) && (publisherWalletFlowVO.getCashAmount().compareTo(BigDecimal.ZERO) > 0 || publisherWalletFlowVO.getSalaryAmount().compareTo(BigDecimal.ZERO) > 0)) {
PayLogDO payLogDO = buildPayLogDO(publisherWalletFlowVO, null);
// 插入流水记录表
payWalletDao.insertPayLogDO(payLogDO);
return ResultBody.success();
} else {
log.error("发布方取消订单,无飞手接单时,用户id是:{},传入参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO);
return ResultBody.error("钱包操作错误");
}
} else if (publisherWalletFlowVO != null && publisherWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.RECEIVED_ORDER_CANCEL.getCode())) { } else if (publisherWalletFlowVO != null && publisherWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.RECEIVED_ORDER_CANCEL.getCode())) {
// 等于300时 发布方取消订单,有飞手接单 // 等于300时 发布方取消订单,有飞手接单
PayWalletDO publishUpdatePayWallet = new PayWalletDO(); PayWalletDO publishUpdatePayWallet = new PayWalletDO();
...@@ -186,7 +165,9 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -186,7 +165,9 @@ public class PayWalletServiceImpl implements PayWalletService {
log.error("飞手抢单时,飞手用户钱包更新失败,飞手用户id是:{},传入参数是:{}", flyerWalletFlowVO.getUserAccountId(), flyerWalletFlowVO); log.error("飞手抢单时,飞手用户钱包更新失败,飞手用户id是:{},传入参数是:{}", flyerWalletFlowVO.getUserAccountId(), flyerWalletFlowVO);
} }
} else if (flyerWalletFlowVO != null && flyerWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.CUSTOMER_SERVICE_CANCEL_ORDER.getCode())) { } else if (flyerWalletFlowVO != null && flyerWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.CUSTOMER_SERVICE_CANCEL_ORDER.getCode())) {
// 状态为500时 客服判定飞手无责取消订单 // 状态为500时 客服判定双方无责取消订单
assert publisherWalletFlowVO != null;
publishCancelOrder(publisherWalletFlowVO, publishWallet, 500);
// 飞手钱包更新信息 // 飞手钱包更新信息
int flyerUpdateCount = buildFlyerWallet(flyerWalletFlowVO, flyerWallet); int flyerUpdateCount = buildFlyerWallet(flyerWalletFlowVO, flyerWallet);
if (flyerUpdateCount > 0) { if (flyerUpdateCount > 0) {
...@@ -195,7 +176,7 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -195,7 +176,7 @@ public class PayWalletServiceImpl implements PayWalletService {
payWalletDao.insertPayLogDO(flyerPayLogDO); payWalletDao.insertPayLogDO(flyerPayLogDO);
return ResultBody.success(); return ResultBody.success();
} else { } else {
log.error("客服判定飞手无责取消订单时,飞手用户钱包更新失败,飞手用户id是:{},传入参数是:{}", flyerWalletFlowVO.getUserAccountId(), flyerWalletFlowVO); log.error("客服判定双方无责取消订单时,飞手用户钱包更新失败,飞手用户id是:{},传入参数是:{}", flyerWalletFlowVO.getUserAccountId(), flyerWalletFlowVO);
} }
} else if (flyerWalletFlowVO != null && flyerWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.FLYER_CANCEL_ORDER.getCode())) { } else if (flyerWalletFlowVO != null && flyerWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.FLYER_CANCEL_ORDER.getCode())) {
// 状态为600时 飞手有责取消订单 // 状态为600时 飞手有责取消订单
...@@ -290,9 +271,11 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -290,9 +271,11 @@ public class PayWalletServiceImpl implements PayWalletService {
publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId()); publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId());
publishUpdatePayWallet.setPid(publishWallet.getPid()); publishUpdatePayWallet.setPid(publishWallet.getPid());
publishUpdatePayWallet.setSalaryAmt(publishWallet.getSalaryAmt().add(publisherWalletFlowVO.getRefundSalaryAmount())); publishUpdatePayWallet.setSalaryAmt(publishWallet.getSalaryAmt().add(publisherWalletFlowVO.getRefundSalaryAmount()));
publishUpdatePayWallet.setSalaryFreeze(publishWallet.getSalaryFreeze().subtract(publisherWalletFlowVO.getRefundSalaryAmount())); publishUpdatePayWallet.setSalaryFreeze(publishWallet.getSalaryFreeze().subtract(publisherWalletFlowVO.getRefundSalaryAmount())
.add(publisherWalletFlowVO.getSalaryAmount()).add(publisherWalletFlowVO.getUrgentSalaryAmount()).add(publisherWalletFlowVO.getTopSalaryAmount()));
publishUpdatePayWallet.setCashAmt(publishWallet.getCashAmt().add(publisherWalletFlowVO.getRefundCashAmount())); publishUpdatePayWallet.setCashAmt(publishWallet.getCashAmt().add(publisherWalletFlowVO.getRefundCashAmount()));
publishUpdatePayWallet.setCashFreeze(publishWallet.getCashFreeze().subtract(publisherWalletFlowVO.getRefundCashAmount())); publishUpdatePayWallet.setCashFreeze(publishWallet.getCashFreeze().subtract(publisherWalletFlowVO.getRefundCashAmount())
.add(publisherWalletFlowVO.getCashAmount()).add(publisherWalletFlowVO.getUrgentYxjAmount()).add(publisherWalletFlowVO.getTopYxjAmount()));
int publishUpdateCount = payWalletDao.updatePayWallet(publishUpdatePayWallet); int publishUpdateCount = payWalletDao.updatePayWallet(publishUpdatePayWallet);
if (publishUpdateCount <= 0) { if (publishUpdateCount <= 0) {
log.error("飞手未确认修改金额大于原订单状态时,发布者用户钱包更新失败,发布者id是:{},发布者参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO); log.error("飞手未确认修改金额大于原订单状态时,发布者用户钱包更新失败,发布者id是:{},发布者参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO);
...@@ -314,20 +297,20 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -314,20 +297,20 @@ public class PayWalletServiceImpl implements PayWalletService {
log.error("飞手未确认修改金额大于原订单状态时,接单方用户钱包更新失败,接单者id是:{},发布者传参是:{}", flyerWalletFlowVO.getUserAccountId(), publisherWalletFlowVO); log.error("飞手未确认修改金额大于原订单状态时,接单方用户钱包更新失败,接单者id是:{},发布者传参是:{}", flyerWalletFlowVO.getUserAccountId(), publisherWalletFlowVO);
} }
} else if (publisherWalletFlowVO != null && publisherWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.FLYING_HAND_CONFIRM_LT.getCode())) { } else if (publisherWalletFlowVO != null && publisherWalletFlowVO.getModeOfPayment().equals(PayMethodEnums.FLYING_HAND_CONFIRM_LT.getCode())) {
// 状态为1000时 飞手确认修改金额小于原订单状态 // 状态为1000时 飞手确认修改金额
// 退回发布方多余原订单金额,解冻钱包金额 // 退回发布方多余原订单金额,解冻钱包金额
PayWalletDO publishUpdatePayWallet = new PayWalletDO(); PayWalletDO publishUpdatePayWallet = new PayWalletDO();
publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId()); publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId());
publishUpdatePayWallet.setPid(publishWallet.getPid()); publishUpdatePayWallet.setPid(publishWallet.getPid());
publishUpdatePayWallet.setCashAmt(publishWallet.getCashAmt().add(publisherWalletFlowVO.getRefundCashAmount())); publishUpdatePayWallet.setCashAmt(publishWallet.getCashAmt().add(publisherWalletFlowVO.getRefundCashAmount()));
publishUpdatePayWallet.setCashFreeze(publishWallet.getCashFreeze().subtract(publisherWalletFlowVO.getRefundCashAmount()) publishUpdatePayWallet.setCashFreeze(publishWallet.getCashFreeze().subtract(publisherWalletFlowVO.getRefundCashAmount())
.subtract(publisherWalletFlowVO.getCashAmount()).add(publisherWalletFlowVO.getUrgentYxjAmount()).add(publisherWalletFlowVO.getTopYxjAmount())); .add(publisherWalletFlowVO.getCashAmount()).add(publisherWalletFlowVO.getUrgentYxjAmount()).add(publisherWalletFlowVO.getTopYxjAmount()));
publishUpdatePayWallet.setSalaryAmt(publishWallet.getSalaryAmt().add(publisherWalletFlowVO.getRefundSalaryAmount())); publishUpdatePayWallet.setSalaryAmt(publishWallet.getSalaryAmt().add(publisherWalletFlowVO.getRefundSalaryAmount()));
publishUpdatePayWallet.setSalaryFreeze(publishWallet.getSalaryFreeze().subtract(publisherWalletFlowVO.getRefundSalaryAmount()) publishUpdatePayWallet.setSalaryFreeze(publishWallet.getSalaryFreeze().subtract(publisherWalletFlowVO.getRefundSalaryAmount())
.subtract(publisherWalletFlowVO.getSalaryAmount()).add(publisherWalletFlowVO.getUrgentSalaryAmount()).add(publisherWalletFlowVO.getTopYxjAmount())); .add(publisherWalletFlowVO.getSalaryAmount()).add(publisherWalletFlowVO.getUrgentSalaryAmount()).add(publisherWalletFlowVO.getTopYxjAmount()));
int publishUpdateCount = payWalletDao.updatePayWallet(publishUpdatePayWallet); int publishUpdateCount = payWalletDao.updatePayWallet(publishUpdatePayWallet);
if (publishUpdateCount <= 0) { if (publishUpdateCount <= 0) {
log.error("飞手确认修改金额小于原订单状态,发布者用户钱包更新失败,发布者id是:{},发布者参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO); log.error("飞手确认修改金额状态,发布者用户钱包更新失败,发布者id是:{},发布者参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO);
} }
// 记录多余退款记录 // 记录多余退款记录
refund(publisherWalletFlowVO); refund(publisherWalletFlowVO);
...@@ -349,6 +332,32 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -349,6 +332,32 @@ public class PayWalletServiceImpl implements PayWalletService {
return ResultBody.error("钱包操作错误"); return ResultBody.error("钱包操作错误");
} }
private ResultBody publishCancelOrder(PublisherWalletFlowVO publisherWalletFlowVO, PayWalletDO publishWallet, Integer status) {
PayWalletDO publishUpdatePayWallet = new PayWalletDO();
publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId());
publishUpdatePayWallet.setPid(publishWallet.getPid());
publishUpdatePayWallet.setCashAmt(publishWallet.getCashAmt().add(publisherWalletFlowVO.getCashAmount()));
publishUpdatePayWallet.setCashFreeze(publishWallet.getCashFreeze().add(publisherWalletFlowVO.getTopYxjAmount())
.add(publisherWalletFlowVO.getUrgentYxjAmount()).subtract(publisherWalletFlowVO.getCashAmount()));
publishUpdatePayWallet.setSalaryAmt(publishWallet.getSalaryAmt().add(publisherWalletFlowVO.getSalaryAmount()));
publishUpdatePayWallet.setSalaryFreeze(publishWallet.getSalaryFreeze().add(publisherWalletFlowVO.getTopSalaryAmount())
.add(publisherWalletFlowVO.getUrgentSalaryAmount()).subtract(publisherWalletFlowVO.getSalaryAmount()));
int i = payWalletDao.updatePayWallet(publishUpdatePayWallet);
if ((i > 0) && (publisherWalletFlowVO.getCashAmount().compareTo(BigDecimal.ZERO) > 0 || publisherWalletFlowVO.getSalaryAmount().compareTo(BigDecimal.ZERO) > 0)) {
PayLogDO payLogDO = buildPayLogDO(publisherWalletFlowVO, null);
// 插入流水记录表
payWalletDao.insertPayLogDO(payLogDO);
return ResultBody.success();
} else {
if (status == 200) {
log.error("发布方取消订单,无飞手接单时,用户id是:{},传入参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO);
} else {
log.error("客服判定双方无责取消订单时,发布方钱包更新失败,用户id是:{},传入参数是:{}", publisherWalletFlowVO.getUserAccountId(), publisherWalletFlowVO);
}
return ResultBody.error("钱包操作错误");
}
}
/** /**
* @param publisherWalletFlowVO * @param publisherWalletFlowVO
* @param flag 0 未违约取消 1 违约取消 * @param flag 0 未违约取消 1 违约取消
...@@ -438,8 +447,9 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -438,8 +447,9 @@ public class PayWalletServiceImpl implements PayWalletService {
} }
private void refund(PublisherWalletFlowVO publisherWalletFlowVO) { private void refund(PublisherWalletFlowVO publisherWalletFlowVO) {
if (publisherWalletFlowVO.getRefundCashAmount().compareTo(BigDecimal.ZERO) != 0 || publisherWalletFlowVO.getRefundSalaryAmount().compareTo(BigDecimal.ZERO) != 0) { if (publisherWalletFlowVO.getRefundCashAmount().compareTo(BigDecimal.ZERO) > 0 || publisherWalletFlowVO.getRefundSalaryAmount().compareTo(BigDecimal.ZERO) > 0) {
PayLogDO publishPayLogDO = buildPayLogDO(publisherWalletFlowVO, null); PayLogDO publishPayLogDO = buildPayLogDO(publisherWalletFlowVO, null);
publishPayLogDO.setPayMethod(200);
publishPayLogDO.setCashAmtPaid(publisherWalletFlowVO.getRefundCashAmount()); publishPayLogDO.setCashAmtPaid(publisherWalletFlowVO.getRefundCashAmount());
publishPayLogDO.setSalaryAmtPaid(publisherWalletFlowVO.getRefundSalaryAmount()); publishPayLogDO.setSalaryAmtPaid(publisherWalletFlowVO.getRefundSalaryAmount());
payWalletDao.insertPayLogDO(publishPayLogDO); payWalletDao.insertPayLogDO(publishPayLogDO);
...@@ -462,12 +472,6 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -462,12 +472,6 @@ public class PayWalletServiceImpl implements PayWalletService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean releaseOrCancelOrderWallet(PublisherWalletFlowVO publisherWalletFlowVO, PayWalletDO wallet) { public boolean releaseOrCancelOrderWallet(PublisherWalletFlowVO publisherWalletFlowVO, PayWalletDO wallet) {
PayWalletDO publishUpdatePayWallet = new PayWalletDO(); PayWalletDO publishUpdatePayWallet = new PayWalletDO();
if (publisherWalletFlowVO.getCashAmount() == null) {
publisherWalletFlowVO.setCashAmount(BigDecimal.ZERO);
}
if (publisherWalletFlowVO.getSalaryAmount() == null) {
publisherWalletFlowVO.setSalaryAmount(BigDecimal.ZERO);
}
publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId()); publishUpdatePayWallet.setUserAccountId(publisherWalletFlowVO.getUserAccountId());
publishUpdatePayWallet.setPid(wallet.getPid()); publishUpdatePayWallet.setPid(wallet.getPid());
publishUpdatePayWallet.setCashAmt(wallet.getCashAmt().add(publisherWalletFlowVO.getCashAmount())); publishUpdatePayWallet.setCashAmt(wallet.getCashAmt().add(publisherWalletFlowVO.getCashAmount()));
...@@ -579,4 +583,65 @@ public class PayWalletServiceImpl implements PayWalletService { ...@@ -579,4 +583,65 @@ public class PayWalletServiceImpl implements PayWalletService {
return ResultBody.success(detail); return ResultBody.success(detail);
} }
} }
@Override
public ResultBody payUavWallet(PayUavWalletVO payUavWalletVO) {
// 获取用户钱包信息
PayWalletDO userWalletInfo = payWalletDao.getPayWalletByUser(payUavWalletVO.getUserAccountId());
String payNo = "T" + TDateUtil.getDateStr(new Date(), TDateUtil.TYPE) + payUavWalletVO.getUserAccountId() + CodeUtil.getRandomNum(4);
// 记录流水用户钱包流水记录
PayLogDO payLogDO = new PayLogDO();
payLogDO.setUserAccountId(payUavWalletVO.getUserAccountId());
payLogDO.setPayNo(payNo);
payLogDO.setOperateUser(payUavWalletVO.getUserAccountId());
// 创建用户钱包
PayWalletDO payWalletDO = new PayWalletDO();
payWalletDO.setPid(userWalletInfo.getPid());
payWalletDO.setUserAccountId(payUavWalletVO.getUserAccountId());
// 判断当前订单状态是什么类型
if (payUavWalletVO.getOrderStatus().equals(PayMethodEnums.PUBLISH_ORDER.getCode())) {
// 获取下单金额是否大于该用户钱包金额
if (userWalletInfo.getCashAmt().compareTo(payUavWalletVO.getCashAmount()) < 0) {
return ResultBody.error("可抵扣的云享金不足");
}
if (userWalletInfo.getSalaryAmt().compareTo(payUavWalletVO.getSalaryAmount()) < 0) {
return ResultBody.error("可抵扣的佣金不足");
}
payLogDO.setPayMethod(payUavWalletVO.getOrderStatus());
if (payUavWalletVO.getCashAmount().compareTo(BigDecimal.ZERO) > 0) {
payLogDO.setCashAmtPaid(payUavWalletVO.getCashAmount().negate());
} else {
payLogDO.setCashAmtPaid(BigDecimal.ZERO);
}
if (payUavWalletVO.getSalaryAmount().compareTo(BigDecimal.ZERO) > 0) {
payLogDO.setSalaryAmtPaid(payUavWalletVO.getSalaryAmount().negate());
} else {
payLogDO.setSalaryAmtPaid(BigDecimal.ZERO);
}
// 如果是100 扣减余额冻结金额
payWalletDO.setCashAmt(userWalletInfo.getCashAmt().subtract(payUavWalletVO.getCashAmount()));
payWalletDO.setCashFreeze(userWalletInfo.getCashAmt().add(payUavWalletVO.getCashAmount()));
payWalletDO.setSalaryAmt(userWalletInfo.getSalaryAmt().subtract(payUavWalletVO.getSalaryAmount()));
payWalletDO.setSalaryFreeze(userWalletInfo.getSalaryAmt().add(payUavWalletVO.getSalaryAmount()));
} else if (payUavWalletVO.getOrderStatus().equals(PayMethodEnums.PAY_UAV_ORDER_REFUND.getCode())) {
payLogDO.setPayMethod(payUavWalletVO.getOrderStatus());
payLogDO.setCashAmtPaid(payUavWalletVO.getCashAmount());
payLogDO.setSalaryAmtPaid(payUavWalletVO.getSalaryAmount());
// 如果是1400 回滚解冻金额
payWalletDO.setCashAmt(userWalletInfo.getCashAmt().add(payUavWalletVO.getCashAmount()));
payWalletDO.setCashFreeze(userWalletInfo.getCashAmt().subtract(payUavWalletVO.getCashAmount()));
payWalletDO.setSalaryAmt(userWalletInfo.getSalaryAmt().add(payUavWalletVO.getSalaryAmount()));
payWalletDO.setSalaryFreeze(userWalletInfo.getSalaryAmt().subtract(payUavWalletVO.getSalaryAmount()));
} else {
payLogDO.setPayMethod(payUavWalletVO.getOrderStatus());
payLogDO.setCashAmtPaid(BigDecimal.ZERO);
payLogDO.setSalaryAmtPaid(payUavWalletVO.getSalaryAmount());
// 订单收益
payWalletDO.setSalaryAmt(userWalletInfo.getSalaryAmt().add(payUavWalletVO.getSalaryAmount()));
}
payWalletDao.insertPayLogDO(payLogDO);
payWalletDao.updatePayWallet(payWalletDO);
return ResultBody.success();
}
} }
...@@ -221,6 +221,10 @@ ...@@ -221,6 +221,10 @@
select id, back_user_account_id, company_info_id from company_back_user where company_info_id = #{companyInfoId} select id, back_user_account_id, company_info_id from company_back_user where company_info_id = #{companyInfoId}
</select> </select>
<select id="getCompanyBackUserByBackUserId" resultType="com.mmc.iuav.user.entity.CompanyBackUserDO">
select id, back_user_account_id, company_info_id from company_back_user where back_user_account_id = #{backUserAccountId}
</select>
<select id="getCompanyMember" resultType="com.mmc.iuav.user.entity.CompanyMemberDO"> <select id="getCompanyMember" resultType="com.mmc.iuav.user.entity.CompanyMemberDO">
select id, user_account_id, company_info_id, is_leader as leader from company_member where company_info_id = #{companyInfoId} and user_account_id = #{userAccountId} select id, user_account_id, company_info_id, is_leader as leader from company_member where company_info_id = #{companyInfoId} and user_account_id = #{userAccountId}
</select> </select>
...@@ -262,4 +266,16 @@ ...@@ -262,4 +266,16 @@
</foreach> </foreach>
</if> </if>
</select> </select>
<select id="getManagerByCompanyId" resultType="com.mmc.iuav.user.entity.CompanyMemberDO">
SELECT
id,
user_account_id,
company_info_id,
is_leader,
create_time
FROM
company_member cm
where company_info_id = #{companyInfoId} and is_leader = 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -163,10 +163,11 @@ ...@@ -163,10 +163,11 @@
<select id="feignListUserAccount" resultType="com.mmc.iuav.user.entity.UserAccountDO" <select id="feignListUserAccount" resultType="com.mmc.iuav.user.entity.UserAccountDO"
parameterType="com.mmc.iuav.user.model.qo.UserAccountQO"> parameterType="com.mmc.iuav.user.model.qo.UserAccountQO">
select ua.id, ua.phone_num, ua.user_name, ua.nick_name, ua.user_img, ua.open_id, select ua.id, ua.phone_num, rna.user_name, ua.nick_name, ua.user_img, ua.open_id,
ua.union_id, ua.user_sex, ua.email, ua.source, ua.account_status, ua.remark, ua.union_id, ua.user_sex, ua.email, ua.source, ua.account_status, ua.remark,
ua.port_type, ua.disable, ua.create_time, ua.update_time, ca.auth_status as companyAuthStatus ua.port_type, ua.disable, ua.create_time, ua.update_time, ca.auth_status as companyAuthStatus
from user_account ua left join company_auth ca on ua.id = ca.user_account_id from user_account ua left join company_auth ca on ua.id = ca.user_account_id left join real_name_auth rna on
ua.id = rna.user_account_id
where ua.disable = 0 where ua.disable = 0
<if test=" userIds != null "> <if test=" userIds != null ">
<foreach collection="userIds" item="id" open="and ua.id in (" close=")" separator=","> <foreach collection="userIds" item="id" open="and ua.id in (" close=")" separator=",">
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.iuav.user.dao.fdd.ContractDao">
<insert id="insertUavContractInfo">
insert into contract_info (union_id, order_no, contract_no, contract_title)
values (#{unionId}, #{orderNo}, #{contractNo}, #{contractTitle})
</insert>
<update id="updateContractInfo">
update contract_info
<set>
<if test="signStatus != null">
sign_status = #{signStatus},
</if>
<if test="singerTime != null">
singer_time = #{singerTime},
</if>
<if test="aRemark != null">
a_remark = #{aRemark},
</if>
<if test="bRemark != null">
b_remark = #{bRemark},
</if>
<if test="aTransactionId != null">
a_transaction_id = #{aTransactionId},
</if>
<if test="bTransactionId != null">
b_transaction_id = #{bTransactionId},
</if>
<if test="archiveDate != null">
archive_date = #{archiveDate}
</if>
</set>
where contract_no = #{contractNo}
</update>
<delete id="deleteContractInfo">
delete
from contract_info
where order_no = #{orderNo}
</delete>
<select id="contractInfoByOrderNo" resultType="com.mmc.iuav.user.entity.fdd.ContractInfoDO">
select id,
union_id,
order_no,
contract_no,
contract_title,
sign_status,
singer_time,
a_remark,
b_remark,
a_transaction_id,
b_transaction_id,
create_time,
update_time,
archive_date
from contract_info
<where>
<if test="orderNo != null">
order_no = #{orderNo}
</if>
<if test="contractNo != null">
contract_no = #{contractNo}
</if>
</where>
</select>
<select id="listContractInfoByOrderNo" resultType="com.mmc.iuav.user.entity.fdd.ContractInfoDO">
select id,
union_id,
order_no,
contract_no,
contract_title,
sign_status,
singer_time,
a_remark,
b_remark,
a_transaction_id,
b_transaction_id,
create_time,
update_time,
archive_date
from contract_info
<where>
<if test="orderNo != null">
<foreach collection="orderNo" item="orderNo" separator=",">
order_no = #{orderNo}
</foreach>
</if>
</where>
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.iuav.user.dao.fdd.SealManageDao">
<insert id="insertSealInfo">
insert into seal_info (seal_name, signature_id, seal_url, union_id)
values (#{sealName}, #{signatureId}, #{sealUrl}, #{unionId})
</insert>
<update id="updateSealStatusById">
update seal_info set seal_status = 0
where id in
<foreach collection="list" separator="," index="index" item="item" open="(" close=")">
#{item}
</foreach>
</update>
<update id="updateSealStatusBySignatureId">
update seal_info
set seal_status = 1
where signature_id = #{signatureId}
</update>
<update id="updateSealName">
update seal_info
set seal_name = #{sealName}
where signature_id = #{signatureId}
and union_id = #{unionId}
</update>
<delete id="deletedSealInfo">
delete
from seal_info
where signature_id = #{signatureId}
</delete>
<select id="countSealInfo" resultType="java.lang.Integer">
SELECT
count(*)
FROM seal_info
<where>
union_id = #{uId}
<if test="startTime != null and startTime != '' ">
and create_time &gt;= STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="endTime != null and endTime != '' ">
and create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d %H:%i:%s')
</if>
</where>
</select>
<select id="getSealInfoList" resultType="com.mmc.iuav.user.entity.fdd.SealInfoDO">
SELECT id,
seal_name,
signature_id,
union_id,
seal_status,
seal_url,
create_time
FROM seal_info
<where>
union_id = #{uId}
<if test="startTime != null and startTime != '' ">
and create_time &gt;= STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="endTime != null and endTime != '' ">
and create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d %H:%i:%s')
</if>
</where>
ORDER BY seal_status desc ,create_time desc
limit #{pageNo}, #{pageSize}
</select>
<select id="getSealInfoListByUnionId" resultType="com.mmc.iuav.user.entity.fdd.SealInfoDO">
SELECT id,
seal_name,
signature_id,
union_id,
seal_status,
seal_url,
create_time
FROM seal_info
where union_id = #{uId}
</select>
</mapper>
\ No newline at end of file
...@@ -51,7 +51,14 @@ ...@@ -51,7 +51,14 @@
where customer_id = #{customerId} where customer_id = #{customerId}
</select> </select>
<select id="getAppUserFddInfo" resultType="com.mmc.iuav.user.entity.fdd.UserFddDO"> <select id="getAppUserFddInfo" resultType="com.mmc.iuav.user.entity.fdd.UserFddDO">
select id, customer_id, person_verify_status, ent_verify_status, account_type, create_time, update_time select id,
customer_id,
union_id,
person_verify_status,
ent_verify_status,
account_type,
create_time,
update_time
from user_fdd from user_fdd
where union_id = #{unionId} where union_id = #{unionId}
</select> </select>
......
...@@ -23,6 +23,7 @@ data-filter: ...@@ -23,6 +23,7 @@ data-filter:
- /userapp/company/getCompanyInfoById - /userapp/company/getCompanyInfoById
- /userapp/company/listCompanyInfoByIds - /userapp/company/listCompanyInfoByIds
- /userapp/company/listCompanyInfoByBUIds - /userapp/company/listCompanyInfoByBUIds
- /userapp/company/getManagerIdByBackUserId
- /userapp/cooperation/service/bitmap - /userapp/cooperation/service/bitmap
- /userapp/cooperation/listCompanyInfoByCoopId - /userapp/cooperation/listCompanyInfoByCoopId
- /userapp/cooperation/appBrandList - /userapp/cooperation/appBrandList
...@@ -33,4 +34,7 @@ data-filter: ...@@ -33,4 +34,7 @@ data-filter:
- /userapp/xz/xzWithdrawNotify - /userapp/xz/xzWithdrawNotify
- /userapp/pay/feignTopUpCash - /userapp/pay/feignTopUpCash
- /userapp/pay/feignWalletFlowNO - /userapp/pay/feignWalletFlowNO
- /userapp/pay/feignPayUavWallet
- /userapp/fdd/contract/notifyStamp
- /userapp/fdd/auth/notifyECertRes
...@@ -18,4 +18,4 @@ patches: ...@@ -18,4 +18,4 @@ patches:
images: images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG - name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/cms newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/cms
newTag: d6374ab7d29958354b2b0f4cc1e6e29f6b17f717 newTag: ca052edd5a7e95f4d20df7935fad9c5b9ba2feee
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论