Compare commits
6 Commits
f33f74b20a
...
727b892eab
Author | SHA1 | Date |
---|---|---|
|
727b892eab | |
|
9a743aadf0 | |
|
9cf87753c9 | |
|
8e543c8c92 | |
|
8c542c0594 | |
|
3994d99321 |
|
@ -11,6 +11,7 @@ import com.agileboot.domain.cabinet.cell.command.UpdateCabinetCellCommand;
|
|||
import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
|
||||
import com.agileboot.domain.cabinet.cell.dto.CabinetCellDTO;
|
||||
import com.agileboot.domain.cabinet.cell.query.SearchCabinetCellQuery;
|
||||
import com.agileboot.domain.cabinet.cell.query.SearchCabinetCellWithOrdersQuery;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import java.util.List;
|
||||
|
@ -38,7 +39,7 @@ public class CabinetCellController extends BaseController {
|
|||
|
||||
@Operation(summary = "格口列表")
|
||||
@GetMapping
|
||||
public ResponseDTO<PageDTO<CabinetCellDTO>> list(SearchCabinetCellQuery<CabinetCellEntity> query) {
|
||||
public ResponseDTO<PageDTO<CabinetCellDTO>> list(SearchCabinetCellWithOrdersQuery<CabinetCellEntity> query) {
|
||||
PageDTO<CabinetCellDTO> page = cabinetCellApplicationService.getCabinetCellList(query);
|
||||
return ResponseDTO.ok(page);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.agileboot.admin.controller.qywx;
|
|||
|
||||
import com.agileboot.admin.customize.aop.accessLog.AccessLog;
|
||||
import com.agileboot.admin.customize.service.QywxScheduleJob;
|
||||
import com.agileboot.common.constant.WeixinConstants;
|
||||
import com.agileboot.common.core.base.BaseController;
|
||||
import com.agileboot.common.core.dto.ResponseDTO;
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
|
@ -108,7 +109,7 @@ public class QyDepartmentController extends BaseController {
|
|||
public ResponseDTO<List<DeptDTO>> depts(@RequestParam String corpid) {
|
||||
List<QyDepartmentEntity> qyDepartmentEntityList = departmentApplicationService.getDepartmentList();
|
||||
if (StringUtils.isBlank(corpid)) {
|
||||
corpid = "wpZ1ZrEgAA2QTxIRcB4cMtY7hQbTcPAw";
|
||||
corpid = WeixinConstants.corpid;
|
||||
}
|
||||
// 根据corpid过滤部门列表
|
||||
String finalCorpid = corpid;
|
||||
|
|
|
@ -5,15 +5,20 @@ import com.agileboot.common.core.base.BaseController;
|
|||
import com.agileboot.common.core.dto.ResponseDTO;
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.common.enums.common.BusinessTypeEnum;
|
||||
import com.agileboot.common.utils.poi.CustomExcelUtil;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import com.agileboot.domain.shop.approval.ReturnApprovalApplicationService;
|
||||
import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand;
|
||||
import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand;
|
||||
import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity;
|
||||
import com.agileboot.domain.shop.approval.dto.ReturnApprovalDTO;
|
||||
import com.agileboot.domain.shop.approval.dto.ReturnApprovalExcelDTO;
|
||||
import com.agileboot.domain.shop.approval.query.SearchReturnApprovalQuery;
|
||||
import com.agileboot.domain.shop.order.db.ShopOrderEntity;
|
||||
import com.agileboot.domain.shop.order.dto.ShopOrderExcelDTO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
@ -36,11 +41,22 @@ public class ReturnApprovalController extends BaseController {
|
|||
|
||||
@Operation(summary = "退货审批列表")
|
||||
@GetMapping
|
||||
public ResponseDTO<PageDTO<ReturnApprovalDTO>> list(SearchReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
PageDTO<ReturnApprovalDTO> page = approvalApplicationService.getApprovalList(query);
|
||||
public ResponseDTO<PageDTO<ReturnApprovalEntity>> list(SearchReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
PageDTO<ReturnApprovalEntity> page = approvalApplicationService.getApprovalPage(query);
|
||||
return ResponseDTO.ok(page);
|
||||
}
|
||||
|
||||
@Operation(summary = "退货审批列表导出")
|
||||
@AccessLog(title = "退货审批管理", businessType = BusinessTypeEnum.EXPORT)
|
||||
@GetMapping("/excel")
|
||||
public void exportReturnApprovalByExcel(HttpServletResponse response, SearchReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
query.setPaymentMethod("wechat");
|
||||
query.setStatus(2);
|
||||
List<ReturnApprovalEntity> list = approvalApplicationService.getApprovalList(query);
|
||||
List<ReturnApprovalExcelDTO> excelDTOList = list.stream().map(ReturnApprovalExcelDTO::new).collect(Collectors.toList());
|
||||
CustomExcelUtil.writeToResponse(excelDTOList, ReturnApprovalExcelDTO.class, response);
|
||||
}
|
||||
|
||||
@Operation(summary = "新增退货审批")
|
||||
@AccessLog(title = "退货审批管理", businessType = BusinessTypeEnum.ADD)
|
||||
@PostMapping
|
||||
|
|
|
@ -11,6 +11,7 @@ import com.agileboot.domain.shop.order.OrderApplicationService;
|
|||
import com.agileboot.domain.shop.order.db.ShopOrderEntity;
|
||||
import com.agileboot.domain.shop.order.db.dto.OrderWithGoodsDTO;
|
||||
import com.agileboot.domain.shop.order.dto.ShopOrderExcelDTO;
|
||||
import com.agileboot.domain.shop.order.query.SearchShopOrderExcelQuery;
|
||||
import com.agileboot.domain.shop.order.query.SearchShopOrderQuery;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@ -45,7 +46,7 @@ public class ShopOrderController extends BaseController {
|
|||
@Operation(summary = "订单列表导出")
|
||||
@AccessLog(title = "订单管理", businessType = BusinessTypeEnum.EXPORT)
|
||||
@GetMapping("/excel")
|
||||
public void exportOrderByExcel(HttpServletResponse response, SearchShopOrderQuery<ShopOrderEntity> query) {
|
||||
public void exportOrderByExcel(HttpServletResponse response, SearchShopOrderExcelQuery<ShopOrderEntity> query) {
|
||||
query.setPaymentMethod("wechat");
|
||||
query.setPayStatus(2);
|
||||
List<ShopOrderEntity> list = orderApplicationService.list(query);
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.agileboot.admin.customize.service.login;
|
|||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.agileboot.common.enums.BasicEnumUtil;
|
||||
import com.agileboot.common.enums.common.UserStatusEnum;
|
||||
import com.agileboot.common.exception.ApiException;
|
||||
|
@ -64,6 +65,7 @@ public class FakeUserDetailsServiceImpl {
|
|||
}
|
||||
|
||||
public RoleInfo getRoleInfo(Long roleId, boolean isAdmin) {
|
||||
// log.info("用户角色:{}", roleId);
|
||||
if (roleId == null) {
|
||||
return RoleInfo.EMPTY_ROLE;
|
||||
}
|
||||
|
@ -81,6 +83,7 @@ public class FakeUserDetailsServiceImpl {
|
|||
}
|
||||
|
||||
SysRoleEntity roleEntity = roleService.getById(roleId);
|
||||
// log.info("用户角色:{}", JSONUtil.toJsonStr(roleEntity));
|
||||
|
||||
if (roleEntity == null) {
|
||||
return RoleInfo.EMPTY_ROLE;
|
||||
|
@ -90,6 +93,7 @@ public class FakeUserDetailsServiceImpl {
|
|||
|
||||
Set<Long> menuIds = menuList.stream().map(SysMenuEntity::getMenuId).collect(Collectors.toSet());
|
||||
Set<String> permissions = menuList.stream().map(SysMenuEntity::getPermission).collect(Collectors.toSet());
|
||||
// log.info("用户角色:{} 权限:{}", roleEntity.getRoleKey(), String.join(",", permissions));
|
||||
|
||||
DataScopeEnum dataScopeEnum = BasicEnumUtil.fromValue(DataScopeEnum.class, roleEntity.getDataScope());
|
||||
|
||||
|
|
|
@ -239,6 +239,9 @@ public class PaymentController {
|
|||
List<QyUserEntity> qyUserEntityList = new ArrayList<>();
|
||||
for (QyAuthCorpInfoEntity qyAuthCorpInfoEntity : qyAuthCorpInfoEntityList) {
|
||||
String corpid = qyAuthCorpInfoEntity.getCorpid();
|
||||
if (!corpid.equals(WeixinConstants.corpid)) {
|
||||
continue;
|
||||
}
|
||||
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, corpid);
|
||||
UserIdResponse userIdResponse = QywxApiUtil.convertToUserid(accessToken.getAccessToken(), openid);
|
||||
QyUserEntity qyUser = qyUserApplicationService.getUserByUserId(userIdResponse.getUserid(), corpid);
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.agileboot.common.core.dto.ResponseDTO;
|
|||
import com.agileboot.common.exception.ApiException;
|
||||
import com.agileboot.common.exception.error.ErrorCode;
|
||||
import com.agileboot.domain.ab98.api.SsoLoginUserinfo;
|
||||
import com.agileboot.domain.qywx.user.QyUserApplicationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@ -21,6 +22,7 @@ import java.util.Map;
|
|||
@RequiredArgsConstructor
|
||||
@Api(tags = "微信登录接口")
|
||||
public class WxLoginController {
|
||||
private final QyUserApplicationService qyUserApplicationService;
|
||||
|
||||
@PostMapping("/logout")
|
||||
@ApiOperation(value = "用户退出登录")
|
||||
|
@ -79,7 +81,8 @@ public class WxLoginController {
|
|||
public ResponseDTO<Ab98ApiUtil.LoginData> verifySms(
|
||||
@RequestParam String token,
|
||||
@RequestParam String tel,
|
||||
@RequestParam String vcode) {
|
||||
@RequestParam String vcode,
|
||||
@RequestParam(required = false) String userid) {
|
||||
try {
|
||||
Ab98ApiUtil.LoginResponse loginResponse = Ab98ApiUtil.verifySmsCode(token, tel, vcode);
|
||||
Ab98ApiUtil.LoginData data = new Ab98ApiUtil.LoginData();
|
||||
|
@ -90,6 +93,13 @@ public class WxLoginController {
|
|||
data.setUserid(loginResponse.getOutputData().getUserid());
|
||||
data.setRegistered(loginResponse.getOutputData().isRegistered());
|
||||
data.setTel(loginResponse.getOutputData().getTel());
|
||||
|
||||
try {
|
||||
qyUserApplicationService.saveQyUserInfoByAb98(userid, loginResponse.getOutputData(), null);
|
||||
} catch (Exception e) {
|
||||
log.error("保存汇邦云用户信息失败: ", e);
|
||||
}
|
||||
|
||||
return ResponseDTO.ok(data);
|
||||
} catch (ApiException e) {
|
||||
log.error("短信验证失败: {}", e.getMessage());
|
||||
|
@ -99,7 +109,8 @@ public class WxLoginController {
|
|||
|
||||
@GetMapping("/tokenLogin")
|
||||
@ApiOperation(value = "通过token登录", notes = "用于快速登录,无需验证码")
|
||||
public ResponseDTO<Ab98ApiUtil.LoginData> tokenLogin(@RequestParam String token) {
|
||||
public ResponseDTO<Ab98ApiUtil.LoginData> tokenLogin(@RequestParam String token,
|
||||
@RequestParam(required = false) String userid) {
|
||||
SsoLoginUserinfo loginUserinfo = Ab98ApiUtil.getLoginUserInfoRemote("wxshop", "34164e41f0c6694be6bbbba0dc50c14a", token, "");
|
||||
|
||||
Ab98ApiUtil.LoginData data = new Ab98ApiUtil.LoginData();
|
||||
|
@ -114,6 +125,11 @@ public class WxLoginController {
|
|||
data.setRegistered(true);
|
||||
data.setTel(loginUserinfo.getPhone());
|
||||
|
||||
try {
|
||||
qyUserApplicationService.saveQyUserInfoByAb98(userid, null, loginUserinfo);
|
||||
} catch (Exception e) {
|
||||
log.error("保存汇邦云用户信息失败: ", e);
|
||||
}
|
||||
return ResponseDTO.ok(data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.agileboot.domain.cabinet.cell;
|
|||
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.domain.cabinet.cell.dto.CabinetCellWithOrderCountDTO;
|
||||
import com.agileboot.domain.cabinet.cell.query.SearchCabinetCellWithOrdersQuery;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import com.agileboot.domain.cabinet.cell.command.AddCabinetCellCommand;
|
||||
import com.agileboot.domain.cabinet.cell.command.UpdateCabinetCellCommand;
|
||||
|
@ -29,7 +30,7 @@ public class CabinetCellApplicationService {
|
|||
private final CabinetCellModelFactory cabinetCellModelFactory;
|
||||
private final ShopGoodsService shopGoodsService;
|
||||
|
||||
public PageDTO<CabinetCellDTO> getCabinetCellList(SearchCabinetCellQuery<CabinetCellEntity> query) {
|
||||
public PageDTO<CabinetCellDTO> getCabinetCellList(SearchCabinetCellWithOrdersQuery<CabinetCellEntity> query) {
|
||||
// Page<CabinetCellEntity> page = cabinetCellService.getCellList(query);
|
||||
Page<CabinetCellWithOrderCountDTO> page = cabinetCellService.getCellListWithOrders(query);
|
||||
List<ShopGoodsEntity> goodsList = shopGoodsService.selectAll();
|
||||
|
|
|
@ -31,7 +31,8 @@ public class SearchCabinetCellWithOrdersQuery<T> extends AbstractPageQuery<T> {
|
|||
.eq(usageStatus != null, "cc.usage_status", usageStatus)
|
||||
.eq(availableStatus != null, "cc.available_status", availableStatus)
|
||||
.eq("cc.deleted", false)
|
||||
.between(startTime != null && endTime != null, "cc.create_time", startTime, endTime);
|
||||
.between(startTime != null && endTime != null, "cc.create_time", startTime, endTime)
|
||||
.groupBy("cc.cell_id");
|
||||
|
||||
this.timeRangeColumn = "create_time";
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package com.agileboot.domain.qywx.user;
|
||||
|
||||
import com.agileboot.common.constant.WeixinConstants;
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.domain.ab98.api.Ab98ApiUtil;
|
||||
import com.agileboot.domain.ab98.api.SsoLoginUserinfo;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import com.agileboot.domain.qywx.user.command.AddQyUserCommand;
|
||||
import com.agileboot.domain.qywx.user.command.UpdateQyUserCommand;
|
||||
|
@ -10,17 +13,25 @@ import com.agileboot.domain.qywx.user.dto.QyUserDTO;
|
|||
import com.agileboot.domain.qywx.user.model.UserModel;
|
||||
import com.agileboot.domain.qywx.user.model.QyUserModelFactory;
|
||||
import com.agileboot.domain.qywx.user.query.SearchQyUserQuery;
|
||||
import com.agileboot.domain.qywx.userQySys.db.SysUserQyUserEntity;
|
||||
import com.agileboot.domain.qywx.userQySys.db.SysUserQyUserService;
|
||||
import com.agileboot.domain.system.user.db.SysUserEntity;
|
||||
import com.agileboot.domain.system.user.db.SysUserService;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class QyUserApplicationService {
|
||||
private final QyUserService userService;
|
||||
private final QyUserModelFactory qyUserModelFactory;
|
||||
private final SysUserQyUserService sysUserQyUserService;
|
||||
private final SysUserService sysUserService;
|
||||
|
||||
public PageDTO<QyUserDTO> getUserList(SearchQyUserQuery<QyUserEntity> query) {
|
||||
Page<QyUserEntity> page = userService.getUserList(query);
|
||||
|
@ -56,4 +67,41 @@ public class QyUserApplicationService {
|
|||
public QyUserEntity getUserByUserId(String userid, String corpid) {
|
||||
return userService.getUserByUserId(userid, corpid);
|
||||
}
|
||||
|
||||
public void saveQyUserInfoByAb98(String userid, Ab98ApiUtil.LoginData data, SsoLoginUserinfo loginUserinfo) {
|
||||
QyUserEntity qyUser = getUserByUserId(userid, WeixinConstants.corpid);
|
||||
if (qyUser == null) {
|
||||
log.error("saveQyUserInfoByAb98: user not found for userid: {}", userid);
|
||||
return;
|
||||
}
|
||||
SysUserQyUserEntity sysUserQyUser = sysUserQyUserService.getByQyUserId(qyUser.getId());
|
||||
SysUserEntity sysUser = null;
|
||||
if (sysUserQyUser != null) {
|
||||
sysUser = sysUserService.getById(sysUserQyUser.getSysUserId());
|
||||
}
|
||||
|
||||
if (data != null) {
|
||||
qyUser.setAvatar(data.getFace_img());
|
||||
qyUser.setGender(data.getSex());
|
||||
qyUser.setMobile(data.getTel());
|
||||
qyUser.updateById();
|
||||
if (sysUser!= null) {
|
||||
sysUser.setAvatar(data.getFace_img());
|
||||
sysUser.setSex(data.getSex().contains("女") ? 0 : 1);
|
||||
sysUser.setPhoneNumber(data.getTel());
|
||||
sysUser.updateById();
|
||||
}
|
||||
} else if (loginUserinfo != null) {
|
||||
qyUser.setAvatar(loginUserinfo.getFace());
|
||||
qyUser.setGender(loginUserinfo.getSex());
|
||||
qyUser.setMobile(loginUserinfo.getPhone());
|
||||
qyUser.updateById();
|
||||
if (sysUser!= null) {
|
||||
sysUser.setAvatar(loginUserinfo.getFace());
|
||||
sysUser.setSex(loginUserinfo.getSex().contains("女")? 0 : 1);
|
||||
sysUser.setPhoneNumber(loginUserinfo.getPhone());
|
||||
sysUser.updateById();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,7 +19,6 @@ import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand;
|
|||
import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand;
|
||||
import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity;
|
||||
import com.agileboot.domain.shop.approval.db.ReturnApprovalService;
|
||||
import com.agileboot.domain.shop.approval.dto.ReturnApprovalDTO;
|
||||
import com.agileboot.domain.shop.approval.model.ReturnApprovalModel;
|
||||
import com.agileboot.domain.shop.approval.model.ReturnApprovalModelFactory;
|
||||
import com.agileboot.domain.shop.approval.query.SearchApiReturnApprovalQuery;
|
||||
|
@ -43,10 +42,9 @@ import java.util.ArrayList;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -75,14 +73,23 @@ public class ReturnApprovalApplicationService {
|
|||
/**
|
||||
* 获取退货审批列表
|
||||
* @param query 查询条件
|
||||
* @return 分页的退货审批DTO列表
|
||||
* @return 分页的退货审批列表
|
||||
*/
|
||||
public PageDTO<ReturnApprovalDTO> getApprovalList(SearchReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
Page<ReturnApprovalEntity> page = approvalService.getApprovalList(query);
|
||||
List<ReturnApprovalDTO> dtoList = page.getRecords().stream()
|
||||
public PageDTO<ReturnApprovalEntity> getApprovalPage(SearchReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
Page<ReturnApprovalEntity> page = approvalService.getApprovalPage(query);
|
||||
/*List<ReturnApprovalDTO> dtoList = page.getRecords().stream()
|
||||
.map(ReturnApprovalDTO::new)
|
||||
.collect(Collectors.toList());
|
||||
return new PageDTO<>(dtoList, page.getTotal());
|
||||
.collect(Collectors.toList());*/
|
||||
return new PageDTO<>(page.getRecords(), page.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取退货审批列表
|
||||
* @param query 查询条件
|
||||
* @return 退货审批列表
|
||||
*/
|
||||
public List<ReturnApprovalEntity> getApprovalList(SearchReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
return approvalService.getApprovalList(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -207,6 +214,7 @@ public class ReturnApprovalApplicationService {
|
|||
model.setAuditImages(command.getAuditImages());
|
||||
model.setAuditRemark(command.getAuditRemark());
|
||||
model.setReturnAmount(command.getReturnAmount());
|
||||
model.setApprovalTime(new Date());
|
||||
model.setStatus(2); // 2表示审核通过状态
|
||||
model.updateById();
|
||||
|
||||
|
@ -269,7 +277,7 @@ public class ReturnApprovalApplicationService {
|
|||
String appid = "QWTONG_YS_WXSHOP";
|
||||
List<QyAuthCorpInfoEntity> authCorpInfoList = authCorpInfoApplicationService.getByAppid(appid);
|
||||
QyAuthCorpInfoEntity authCorpInfo = authCorpInfoList.stream()
|
||||
.filter(a -> "wpZ1ZrEgAA2QTxIRcB4cMtY7hQbTcPAw".equals(a.getCorpid()))
|
||||
.filter(a -> WeixinConstants.corpid.equals(a.getCorpid()))
|
||||
.findFirst().orElse(null);
|
||||
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, authCorpInfo.getCorpid());
|
||||
// 获取用户ID
|
||||
|
@ -318,6 +326,7 @@ public class ReturnApprovalApplicationService {
|
|||
model.setStatus(3);
|
||||
model.setAuditImages(command.getAuditImages());
|
||||
model.setAuditRemark(command.getAuditRemark());
|
||||
model.setApprovalTime(new Date());
|
||||
model.updateById();
|
||||
}
|
||||
}
|
|
@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
|
@ -77,9 +79,13 @@ public class ReturnApprovalEntity extends BaseEntity<ReturnApprovalEntity> {
|
|||
private String auditName;
|
||||
|
||||
@ApiModelProperty("审批状态(1待审核 2已通过 3已驳回)")
|
||||
@TableField("`status`")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("审批时间")
|
||||
@TableField("approval_time")
|
||||
private Date approvalTime;
|
||||
|
||||
@ApiModelProperty("商品名称")
|
||||
@TableField(exist = false)
|
||||
private String goodsName;
|
||||
|
@ -104,6 +110,10 @@ public class ReturnApprovalEntity extends BaseEntity<ReturnApprovalEntity> {
|
|||
@TableField(exist = false)
|
||||
private Integer isInternal;
|
||||
|
||||
@ApiModelProperty("支付方式")
|
||||
@TableField(exist = false)
|
||||
private String paymentMethod;
|
||||
|
||||
@Override
|
||||
public Serializable pkVal() {
|
||||
return this.approvalId;
|
||||
|
|
|
@ -27,14 +27,27 @@ public interface ReturnApprovalMapper extends BaseMapper<ReturnApprovalEntity> {
|
|||
Page<ReturnApprovalEntity> selectApprovalWithGoodsInfo(Page<ReturnApprovalEntity> page,
|
||||
@Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper);
|
||||
|
||||
@Select("SELECT * " +
|
||||
"FROM return_approval " +
|
||||
@Select("SELECT ra.*, sog.goods_name AS goodsName, sog.cover_img AS coverImg, " +
|
||||
"so.mobile, so.userid, so.name, so.payment_method AS paymentMethod " +
|
||||
"FROM return_approval ra " +
|
||||
"LEFT JOIN shop_order so ON ra.order_id = so.order_id AND so.deleted = 0 " +
|
||||
"LEFT JOIN shop_order_goods sog ON ra.order_goods_id = sog.order_goods_id AND sog.deleted = 0 " +
|
||||
"${ew.customSqlSegment}")
|
||||
Page<ReturnApprovalEntity> getApprovalList(
|
||||
Page<ReturnApprovalEntity> getApprovalPage(
|
||||
Page<ReturnApprovalEntity> page,
|
||||
@Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper
|
||||
);
|
||||
|
||||
@Select("SELECT ra.*, sog.goods_name AS goodsName, sog.cover_img AS coverImg, " +
|
||||
"so.mobile, so.userid, so.name, so.payment_method AS paymentMethod " +
|
||||
"FROM return_approval ra " +
|
||||
"LEFT JOIN shop_order so ON ra.order_id = so.order_id AND so.deleted = 0 " +
|
||||
"LEFT JOIN shop_order_goods sog ON ra.order_goods_id = sog.order_goods_id AND sog.deleted = 0 " +
|
||||
"${ew.customSqlSegment}")
|
||||
List<ReturnApprovalEntity> getApprovalList(
|
||||
@Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper
|
||||
);
|
||||
|
||||
@Select("SELECT * " +
|
||||
"FROM return_approval " +
|
||||
"WHERE status = #{status} " +
|
||||
|
|
|
@ -16,8 +16,10 @@ import java.util.List;
|
|||
*/
|
||||
public interface ReturnApprovalService extends IService<ReturnApprovalEntity> {
|
||||
|
||||
Page<ReturnApprovalEntity> getApprovalList(AbstractPageQuery<ReturnApprovalEntity> query);
|
||||
|
||||
Page<ReturnApprovalEntity> getApprovalPage(AbstractPageQuery<ReturnApprovalEntity> query);
|
||||
|
||||
List<ReturnApprovalEntity> getApprovalList(AbstractPageQuery<ReturnApprovalEntity> query);
|
||||
|
||||
List<ReturnApprovalEntity> selectAll();
|
||||
|
||||
ReturnApprovalEntity getByOrderId(Long orderId);
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package com.agileboot.domain.shop.approval.db;
|
||||
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
@ -21,8 +20,13 @@ import java.util.List;
|
|||
public class ReturnApprovalServiceImpl extends ServiceImpl<ReturnApprovalMapper, ReturnApprovalEntity> implements ReturnApprovalService {
|
||||
|
||||
@Override
|
||||
public Page<ReturnApprovalEntity> getApprovalList(AbstractPageQuery<ReturnApprovalEntity> query) {
|
||||
return this.page(query.toPage(), query.toQueryWrapper());
|
||||
public Page<ReturnApprovalEntity> getApprovalPage(AbstractPageQuery<ReturnApprovalEntity> query) {
|
||||
return baseMapper.getApprovalPage(query.toPage(), query.toQueryWrapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReturnApprovalEntity> getApprovalList(AbstractPageQuery<ReturnApprovalEntity> query) {
|
||||
return baseMapper.getApprovalList(query.toQueryWrapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
package com.agileboot.domain.shop.approval.dto;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.agileboot.common.annotation.ExcelColumn;
|
||||
import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ReturnApprovalExcelDTO {
|
||||
public ReturnApprovalExcelDTO(ReturnApprovalEntity entity) {
|
||||
if (entity != null) {
|
||||
BeanUtil.copyProperties(entity, this);
|
||||
this.statusStr = convertStatus(entity.getStatus());
|
||||
this.approvalTimeStr = entity.getApprovalTime() != null ?
|
||||
DateUtil.format(entity.getApprovalTime(), "yyyy-MM-dd HH:mm:ss") : "";
|
||||
}
|
||||
}
|
||||
|
||||
private String convertStatus(Integer status) {
|
||||
if (status == null) return "-";
|
||||
switch (status) {
|
||||
case 1: return "待审核";
|
||||
case 2: return "已通过";
|
||||
case 3: return "已驳回";
|
||||
default: return "未知状态";
|
||||
}
|
||||
}
|
||||
|
||||
@ExcelColumn(name = "审批编号")
|
||||
private Long approvalId;
|
||||
|
||||
// @ExcelColumn(name = "归还数量")
|
||||
// private Integer returnQuantity;
|
||||
|
||||
@ExcelColumn(name = "商品单价")
|
||||
private BigDecimal goodsPrice;
|
||||
|
||||
@ExcelColumn(name = "退还金额")
|
||||
private BigDecimal returnAmount;
|
||||
|
||||
@ExcelColumn(name = "审批状态")
|
||||
private String statusStr;
|
||||
|
||||
// @ExcelColumn(name = "创建时间")
|
||||
// private String createTimeStr;
|
||||
//
|
||||
// @ExcelColumn(name = "审批人")
|
||||
// private String auditName;
|
||||
//
|
||||
// @ExcelColumn(name = "商品名称")
|
||||
// private String goodsName;
|
||||
//
|
||||
// @ExcelColumn(name = "手机号码")
|
||||
// private String mobile;
|
||||
|
||||
@ExcelColumn(name = "审批时间")
|
||||
private String approvalTimeStr;
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.agileboot.domain.shop.approval.query;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
@ -19,22 +20,28 @@ public class SearchReturnApprovalQuery<T> extends AbstractPageQuery<T> {
|
|||
private String auditRemark;
|
||||
private Date startTime;
|
||||
private Date endTime;
|
||||
private String paymentMethod;
|
||||
private Date approvalTime;
|
||||
|
||||
@Override
|
||||
public QueryWrapper<T> addQueryCondition() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
queryWrapper
|
||||
.eq(approvalId != null, "approval_id", approvalId)
|
||||
.eq(orderId != null, "order_id", orderId)
|
||||
.eq(goodsId != null, "goods_id", goodsId)
|
||||
.eq(status != null, "status", status)
|
||||
.like(StrUtil.isNotEmpty(returnRemark), "return_remark", returnRemark)
|
||||
.like(StrUtil.isNotEmpty(auditRemark), "audit_remark", auditRemark)
|
||||
.between(startTime != null && endTime != null, "create_time", startTime, endTime)
|
||||
.orderByDesc("create_time");
|
||||
.eq(approvalId != null, "ra.approval_id", approvalId)
|
||||
.eq(orderId != null, "ra.order_id", orderId)
|
||||
.eq(goodsId != null, "ra.goods_id", goodsId)
|
||||
.eq(status != null, "ra.status", status)
|
||||
.like(StrUtil.isNotEmpty(returnRemark), "ra.return_remark", returnRemark)
|
||||
.like(StrUtil.isNotEmpty(auditRemark), "ra.audit_remark", auditRemark)
|
||||
.like(StrUtil.isNotEmpty(paymentMethod), "so.payment_method", paymentMethod)
|
||||
// .between(startTime != null && endTime != null, "ra.create_time", startTime, endTime)
|
||||
.between(approvalTime != null, "ra.approval_time",
|
||||
approvalTime == null ? null : DateUtil.beginOfDay(approvalTime).toJdkDate(),
|
||||
approvalTime == null ? null : DateUtil.endOfDay(approvalTime).toJdkDate())
|
||||
.orderByDesc("ra.create_time");
|
||||
|
||||
this.timeRangeColumn = "create_time";
|
||||
this.timeRangeColumn = "ra.create_time";
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ import com.agileboot.domain.shop.order.model.OrderModel;
|
|||
import com.agileboot.domain.shop.order.model.OrderModelFactory;
|
||||
import com.agileboot.domain.shop.order.model.OrderGoodsModel;
|
||||
import com.agileboot.domain.shop.order.model.OrderGoodsModelFactory;
|
||||
import com.agileboot.domain.shop.order.query.SearchShopOrderExcelQuery;
|
||||
import com.agileboot.domain.shop.order.query.SearchShopOrderQuery;
|
||||
import com.agileboot.domain.shop.payment.PaymentApplicationService;
|
||||
import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateRequest;
|
||||
|
@ -80,7 +81,7 @@ public class OrderApplicationService {
|
|||
return new PageDTO<>(page.getRecords(), page.getTotal());
|
||||
}
|
||||
|
||||
public List<ShopOrderEntity> list(SearchShopOrderQuery<ShopOrderEntity> query) {
|
||||
public List<ShopOrderEntity> list(SearchShopOrderExcelQuery<ShopOrderEntity> query) {
|
||||
return orderService.list(query.toQueryWrapper());
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package com.agileboot.domain.shop.order.query;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SearchShopOrderExcelQuery<T> extends AbstractPageQuery<T> {
|
||||
private Long orderId;
|
||||
private Long cellId;
|
||||
private Integer status;
|
||||
private Integer payStatus;
|
||||
private Date startTime;
|
||||
private Date endTime;
|
||||
private Date payTime;
|
||||
private String paymentMethod;
|
||||
|
||||
@Override
|
||||
public QueryWrapper<T> addQueryCondition() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
queryWrapper
|
||||
.eq(orderId != null, "order_id", orderId)
|
||||
.eq(status != null, "status", status)
|
||||
.eq(payStatus != null, "pay_status", payStatus)
|
||||
.eq(StrUtil.isNotEmpty(paymentMethod), "payment_method", paymentMethod)
|
||||
.between(startTime != null && endTime != null, "create_time", startTime, endTime)
|
||||
.between(payTime != null, "pay_time",
|
||||
payTime == null ? null : DateUtil.beginOfDay(payTime).toJdkDate(),
|
||||
payTime == null ? null : DateUtil.endOfDay(payTime).toJdkDate())
|
||||
.eq("deleted", 0)
|
||||
.groupBy("order_id")
|
||||
.orderByDesc("create_time");
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
|
@ -15,10 +15,13 @@ import com.agileboot.common.utils.OpenSignUtil;
|
|||
import com.agileboot.domain.shop.order.model.OrderModel;
|
||||
import com.agileboot.domain.shop.order.model.OrderModelFactory;
|
||||
import com.agileboot.domain.shop.payment.dto.*;
|
||||
import com.agileboot.domain.shop.paymentOperationLog.PaymentOperationLogApplicationService;
|
||||
import com.agileboot.domain.shop.paymentOperationLog.command.AddPaymentOperationLogCommand;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
|
@ -32,13 +35,16 @@ import java.util.UUID;
|
|||
@RequiredArgsConstructor
|
||||
public class PaymentApplicationService {
|
||||
private final OrderModelFactory orderModelFactory;
|
||||
private final PaymentOperationLogApplicationService paymentOperationLogApplicationService;
|
||||
private static final Object LOCKER = new Object();
|
||||
|
||||
public WxJsApiPreCreateResponse callJsApiPreCreate(WxJsApiPreCreateRequest request) {
|
||||
String gatewayUrl = PayApiConstants.pay_url;
|
||||
|
||||
String result = "";
|
||||
String jsonBody = "";
|
||||
try {
|
||||
String jsonBody = JSONUtil.toJsonStr(request);
|
||||
jsonBody = JSONUtil.toJsonStr(request);
|
||||
log.info("callJsApiPreCreate 请求body:{}", jsonBody);
|
||||
|
||||
// 使用try-with-resources自动关闭连接
|
||||
|
@ -50,7 +56,7 @@ public class PaymentApplicationService {
|
|||
|
||||
// 获取HTTP状态码和响应体
|
||||
int status = httpResponse.getStatus();
|
||||
String result = httpResponse.body();
|
||||
result = httpResponse.body();
|
||||
log.info("callJsApiPreCreate 响应body:{}", result);
|
||||
|
||||
// 先校验HTTP状态码
|
||||
|
@ -74,6 +80,13 @@ public class PaymentApplicationService {
|
|||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
AddPaymentOperationLogCommand paymentOperationLogCommand = new AddPaymentOperationLogCommand();
|
||||
paymentOperationLogCommand.setParams("body:" + jsonBody + " result:" + result);
|
||||
paymentOperationLogCommand.setOperationType("submitOrder");
|
||||
paymentOperationLogCommand.setStatus(2);
|
||||
paymentOperationLogCommand.setRemark(ExceptionUtils.getStackTrace(e));
|
||||
paymentOperationLogCommand.initBaseEntity();
|
||||
paymentOperationLogApplicationService.addPaymentOperationLog(paymentOperationLogCommand);
|
||||
throw new RuntimeException("支付网关调用失败:" + e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,4 +20,8 @@ AFTER `status`;
|
|||
|
||||
ALTER TABLE `payment_operation_log`
|
||||
ADD COLUMN `params` TEXT DEFAULT NULL COMMENT '操作参数'
|
||||
AFTER `remark`;
|
||||
AFTER `remark`;
|
||||
|
||||
ALTER TABLE `return_approval`
|
||||
ADD COLUMN `approval_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '审批时间'
|
||||
AFTER `status`;
|
Loading…
Reference in New Issue