241019更新

This commit is contained in:
2024-11-01 13:39:23 +08:00
parent 6f27e020a4
commit f910db6b0a
32 changed files with 704 additions and 1913 deletions

1
.gitignore vendored
View File

@@ -5,3 +5,4 @@
/.idea/jarRepositories.xml /.idea/jarRepositories.xml
/.idea/misc.xml /.idea/misc.xml
/.idea/vcs.xml /.idea/vcs.xml
/file/

View File

@@ -27,6 +27,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -159,11 +160,11 @@ public class MpController extends BaseController {
if (tenantId.equals(0)) { if (tenantId.equals(0)) {
return fail("租户ID不存在", null); return fail("租户ID不存在", null);
} }
System.out.println("mpInfo = " + mpInfo); // System.out.println("mpInfo = " + mpInfo);
// 从缓存读取信息 // 从缓存读取信息
if (StrUtil.isNotBlank(mpInfo)) { if (StrUtil.isNotBlank(mpInfo)) {
final Object object = JSONUtil.parseObject(mpInfo, Object.class); final Object object = JSONUtil.parseObject(mpInfo, Object.class);
System.out.println("object = " + object); // System.out.println("object = " + object);
return success(object); return success(object);
} }
@@ -304,17 +305,20 @@ public class MpController extends BaseController {
List<Goods> goodsList = goodsService.getGoodsSpecType0(param); List<Goods> goodsList = goodsService.getGoodsSpecType0(param);
if (getLoginUser() != null) { if (getLoginUser() != null) {
for (Goods goods : goodsList) { for (Goods goods : goodsList) {
BigDecimal originPrice = goods.getPrice();
goods.setPrice(goods.getSalePrice());
if (getLoginUser().getGradeId().equals(33)) { if (getLoginUser().getGradeId().equals(33)) {
if (goods.getDealerGift()) goods.setShowGift(true); if (goods.getDealerGift()) goods.setShowGift(true);
goods.setPrice(goods.getDealerPrice()); goods.setPrice(goods.getDealerPrice());
} }
// 会员店 // 会员店
if (getLoginUser().getGradeId().equals(31)) { if (getLoginUser().getGradeId().equals(31)) {
goods.setPrice(originPrice);
if (goods.getPriceGift()) goods.setShowGift(true); if (goods.getPriceGift()) goods.setShowGift(true);
} }
if (getLoginUser().getGradeId().equals(0)) { // if (getLoginUser().getGradeId().equals(0)) {
goods.setPrice(goods.getSalePrice()); // goods.setPrice(goods.getSalePrice());
} // }
} }
}else { }else {
for (Goods goods : goodsList) { for (Goods goods : goodsList) {

View File

@@ -40,21 +40,22 @@ public class MybatisPlusConfig {
@Override @Override
public Expression getTenantId() { public Expression getTenantId() {
// 从域名拿ID // 从域名拿ID
String Domain = request.getHeader("Domain"); // String Domain = request.getHeader("Domain");
if (StrUtil.isNotBlank(Domain)) { // if (StrUtil.isNotBlank(Domain)) {
String key = "Domain:" + Domain; // String key = "Domain:" + Domain;
String tenantId = redisUtil.get(key); // String tenantId = redisUtil.get(key);
if(tenantId != null){ // if(tenantId != null){
System.out.println("从域名拿TID = " + tenantId); // System.out.println("从域名拿TID = " + tenantId);
return new LongValue(tenantId); // return new LongValue(tenantId);
} // }
} // }
// 从请求头拿ID // // 从请求头拿ID
final String tenantId = request.getHeader("tenantId"); // final String tenantId = request.getHeader("tenantId");
if(tenantId != null){ // if(tenantId != null){
return new LongValue(tenantId); // return new LongValue(tenantId);
} // }
return getLoginUserTenantId(); // return getLoginUserTenantId();
return new LongValue(10158);
} }
@Override @Override

View File

@@ -2,23 +2,13 @@ package com.gxwebsoft.common.core.utils;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.system.entity.Payment; import com.gxwebsoft.common.system.entity.*;
import com.gxwebsoft.common.system.entity.Role;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.common.system.entity.UserRole;
import com.gxwebsoft.common.system.param.RoleParam;
import com.gxwebsoft.shop.entity.MerchantAccount; import com.gxwebsoft.shop.entity.MerchantAccount;
import com.gxwebsoft.shop.entity.Order; import com.gxwebsoft.shop.entity.Order;
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
import org.springframework.http.*;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@@ -121,6 +111,29 @@ public class RequestUtil {
return null; return null;
} }
public User getByUserIdWithoutLogin(Integer userId) {
User user = new User();
user.setUserId(userId);
user.setAuthCode("1700083");
String path = "/system/user/getUserWithoutLogin";
try {
// 链式构建请求
String result = HttpRequest.post(host.concat(path))
.header("Tenantid", TENANT_ID)
.body(JSONUtil.toJSONString(user))
.timeout(20000)//超时,毫秒
.execute().body();
JSONObject jsonObject = JSONObject.parseObject(result);
System.out.println("jsonObject = " + jsonObject);
final String data = jsonObject.getString("data");
return JSONObject.parseObject(data, User.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// 新增用户 // 新增用户
public boolean saveUserByPhone(MerchantAccount merchantAccount) { public boolean saveUserByPhone(MerchantAccount merchantAccount) {
String path = "/system/user/"; String path = "/system/user/";
@@ -172,14 +185,29 @@ public class RequestUtil {
return null; return null;
} }
public void updateUserBalanceWithoutLogin(User user) {
user.setAuthCode("1700083");
try {
// 链式构建请求
final String body = HttpRequest.post(host.concat("/system/user/updateUserBalanceWithoutLogin"))
.header("Tenantid", TENANT_ID)
.body(JSONUtil.toJSONString(user))
.timeout(20000)
.execute().body();
JSONUtil.parseObject(body, ApiResult.class);
} catch (Exception e) {
e.printStackTrace();
}
}
public User getParent(Integer userId) { public User getParent(Integer userId) {
try { try {
// 链式构建请求 // 链式构建请求
final String result = HttpRequest.get(host.concat("/system/user-referee/getReferee/" + userId)) final String result = HttpRequest.get(host.concat("/system/user-referee/getReferee/" + userId))
.header("Authorization", ACCESS_TOKEN)
.header("Tenantid", TENANT_ID) .header("Tenantid", TENANT_ID)
.timeout(20000) .timeout(20000)
.execute().body(); .execute().body();
System.out.println("result = " + result);
JSONObject jsonObject = JSONObject.parseObject(result); JSONObject jsonObject = JSONObject.parseObject(result);
final String data = jsonObject.getString("data"); final String data = jsonObject.getString("data");
return JSONObject.parseObject(data, User.class); return JSONObject.parseObject(data, User.class);
@@ -276,4 +304,20 @@ public class RequestUtil {
return null; return null;
} }
} }
public ApiResult<DictData> getDictData(Integer dictId) {
String path = "/system/dict-data/page?dictId=" + dictId;
try {
// 链式构建请求
final String body = HttpRequest.get(host.concat(path))
.header("tenantId", TENANT_ID)
.timeout(20000)
.execute().body();
// System.out.println("body = " + body);
return JSONUtil.parseObject(body, ApiResult.class);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
} }

View File

@@ -33,6 +33,12 @@ public class DictData implements Serializable {
@ApiModelProperty(value = "字典数据名称") @ApiModelProperty(value = "字典数据名称")
private String dictDataName; private String dictDataName;
@ApiModelProperty(value = "预设字段:路由地址")
private String path;
@ApiModelProperty(value = "预设字段:组件路径")
private String component;
@ApiModelProperty(value = "排序号") @ApiModelProperty(value = "排序号")
private Integer sortNumber; private Integer sortNumber;

View File

@@ -272,6 +272,8 @@ public class User implements UserDetails {
@TableField(exist = false) @TableField(exist = false)
private MerchantAccount merchantAccount; private MerchantAccount merchantAccount;
@TableField(exist = false)
private String authCode;
// @ApiModelProperty("企业信息") // @ApiModelProperty("企业信息")
// @TableField(exist = false) // @TableField(exist = false)
// private Company companyInfo; // private Company companyInfo;

View File

@@ -2,10 +2,14 @@ package com.gxwebsoft.oa.controller;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.utils.JSONUtil;
import com.gxwebsoft.common.core.utils.MyQrCodeUtil; import com.gxwebsoft.common.core.utils.MyQrCodeUtil;
import com.gxwebsoft.common.core.utils.RequestUtil;
import com.gxwebsoft.common.core.web.*; import com.gxwebsoft.common.core.web.*;
import com.gxwebsoft.common.system.entity.DictData;
import com.gxwebsoft.common.system.entity.Role; import com.gxwebsoft.common.system.entity.Role;
import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.oa.entity.Task; import com.gxwebsoft.oa.entity.Task;
@@ -15,8 +19,11 @@ import com.gxwebsoft.oa.param.TaskParam;
import com.gxwebsoft.oa.service.TaskCountService; import com.gxwebsoft.oa.service.TaskCountService;
import com.gxwebsoft.oa.service.TaskRecordService; import com.gxwebsoft.oa.service.TaskRecordService;
import com.gxwebsoft.oa.service.TaskService; import com.gxwebsoft.oa.service.TaskService;
import com.gxwebsoft.shop.entity.Order;
import com.gxwebsoft.shop.service.OrderService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -29,6 +36,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import static com.gxwebsoft.common.core.constants.TaskConstants.*; import static com.gxwebsoft.common.core.constants.TaskConstants.*;
@@ -48,13 +56,17 @@ public class TaskController extends BaseController {
private TaskRecordService taskRecordService; private TaskRecordService taskRecordService;
@Resource @Resource
private TaskCountService taskCountService; private TaskCountService taskCountService;
@Resource
private OrderService orderService;
@Autowired
private RequestUtil requestUtil;
@ApiOperation("分页查询任务记录表") @ApiOperation("分页查询任务记录表")
@GetMapping("/page") @GetMapping("/page")
public ApiResult<PageResult<Task>> page(TaskParam param) { public ApiResult<PageResult<Task>> page(TaskParam param) {
// 使用关联查询 // 使用关联查询
param.setLoginUserId(getLoginUserId()); param.setLoginUserId(getLoginUserId());
return success(taskService.pageRel(param)); return success(taskService.pageRel(param));
} }
@ApiOperation("查询全部任务记录表") @ApiOperation("查询全部任务记录表")
@@ -72,9 +84,9 @@ public class TaskController extends BaseController {
public ApiResult<Task> get(@PathVariable("id") Integer id) { public ApiResult<Task> get(@PathVariable("id") Integer id) {
// 更新阅读状态 // 更新阅读状态
Task task = taskService.getByIdRel(id); Task task = taskService.getByIdRel(id);
if(!task.getLastReadUser().equals(getLoginUserId())){ if (!task.getLastReadUser().equals(getLoginUserId())) {
task.setIsRead(1); task.setIsRead(1);
taskService.updateById(task); taskService.updateById(task);
} }
return success(task); return success(task);
} }
@@ -96,8 +108,8 @@ public class TaskController extends BaseController {
task.setLastAvatar(loginUser.getAvatar()); task.setLastAvatar(loginUser.getAvatar());
task.setLastReadUser(loginUser.getUserId()); task.setLastReadUser(loginUser.getUserId());
task.setLastNickname(loginUser.getNickname()); task.setLastNickname(loginUser.getNickname());
if(task.getName() == null){ if (task.getName() == null) {
task.setName(task.getContent()); task.setName(task.getContent());
} }
} }
if (taskService.saveByRel(task)) { if (taskService.saveByRel(task)) {
@@ -166,7 +178,7 @@ public class TaskController extends BaseController {
@GetMapping("/taskQRCode") @GetMapping("/taskQRCode")
public ApiResult<?> taskQRCode(TaskParam param, HttpServletRequest request) throws IOException { public ApiResult<?> taskQRCode(TaskParam param, HttpServletRequest request) throws IOException {
String url = "https://modules.gxwebsoft.com/oa/task/detail?id=".concat(param.getTaskId().toString()); String url = "https://modules.gxwebsoft.com/oa/task/detail?id=".concat(param.getTaskId().toString());
final String qrCode = MyQrCodeUtil.getTaskCode(param.getTaskId(),url); final String qrCode = MyQrCodeUtil.getTaskCode(param.getTaskId(), url);
return success("操作成功", qrCode); return success("操作成功", qrCode);
} }
@@ -175,8 +187,8 @@ public class TaskController extends BaseController {
public ApiResult<?> taskJoinQRCode(TaskParam param, HttpServletRequest request) throws IOException { public ApiResult<?> taskJoinQRCode(TaskParam param, HttpServletRequest request) throws IOException {
User loginUser = getLoginUser(); User loginUser = getLoginUser();
String access_token = JwtUtil.getAccessToken(request); String access_token = JwtUtil.getAccessToken(request);
String url = "https://modules.gxwebsoft.com/passport/register?type=join&dealerId=".concat(loginUser.getUserId().toString())+"&token=".concat(access_token); String url = "https://modules.gxwebsoft.com/passport/register?type=join&dealerId=".concat(loginUser.getUserId().toString()) + "&token=".concat(access_token);
final String qrCode = MyQrCodeUtil.getUserCode(loginUser.getUserId(),url); final String qrCode = MyQrCodeUtil.getUserCode(loginUser.getUserId(), url);
return success("操作成功", qrCode); return success("操作成功", qrCode);
} }
@@ -184,72 +196,116 @@ public class TaskController extends BaseController {
/** /**
* 每日清零 * 每日清零
*/ */
@Scheduled(cron="0 0 0 * * ?") @Scheduled(cron = "0 0 0 * * ?")
public void todayTask() { public void todayTask() {
System.out.println("每日清零任务 = "); System.out.println("每日清零任务 = ");
final boolean update = taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getToday, 0)); final boolean update = taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getToday, 0));
System.out.println("update = " + update); System.out.println("update = " + update);
} }
/** /**
* 本月清零 * 本月清零
*/ */
@Scheduled(cron="0 0 1 * * ?") @Scheduled(cron = "0 0 1 * * ?")
public void monthTask() { public void monthTask() {
taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getMonth, 0)); taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getMonth, 0));
} }
/** /**
* 每年清零 * 每年清零
*/ */
@Scheduled(cron = "0 0 0 1 * ?") @Scheduled(cron = "0 0 0 1 * ?")
public void yearTask(){ public void yearTask() {
taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getYear, 0)); taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getYear, 0));
} }
/** /**
* 定时结算已解决待评价的工单的任务 * 定时结算已解决待评价的工单的任务
* 1个小时内没有用户再次提交新的回复则自动结算 * 1个小时内没有用户再次提交新的回复则自动结算
* 时间间隔2分钟执行一次 * 时间间隔2分钟执行一次
*/ */
@Scheduled(cron="*/30 * * * * *") @Scheduled(cron = "*/30 * * * * *")
public void updateProgressTask() { public void updateProgressTask() {
// System.out.println("定时任务开始updateProgressTask = " + DateUtil.now()); // System.out.println("定时任务开始updateProgressTask = " + DateUtil.now());
TaskParam taskParam = new TaskParam(); TaskParam taskParam = new TaskParam();
taskParam.setProgress(TOBECONFIRMED); taskParam.setProgress(TOBECONFIRMED);
// taskParam.setTaskId(689); // taskParam.setTaskId(689);
taskParam.setLimit(10L); taskParam.setLimit(10L);
final PageResult<Task> result = taskService.pageRelAll(taskParam); final PageResult<Task> result = taskService.pageRelAll(taskParam);
if(result.getCount() == 0){ if (result.getCount() == 0) {
return; return;
} }
final List<Task> list = result.getList(); final List<Task> list = result.getList();
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
list.forEach(task -> { list.forEach(task -> {
try { try {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date newDate = DateUtil.offset(task.getUpdateTime(), DateField.MINUTE, 60 * 24); Date newDate = DateUtil.offset(task.getUpdateTime(), DateField.MINUTE, 60 * 24);
Date date1 = df.parse(newDate.toString()); Date date1 = df.parse(newDate.toString());
Date date2 = df.parse(DateUtil.now()); Date date2 = df.parse(DateUtil.now());
final boolean after = date2.after(date1); final boolean after = date2.after(date1);
if(after){ if (after) {
// 更新工单状态 // 更新工单状态
task.setProgress(COMPLETED); task.setProgress(COMPLETED);
task.setStatus(TASK_STATUS_1); task.setStatus(TASK_STATUS_1);
taskService.updateByIdAll(task); taskService.updateByIdAll(task);
// 待评价的工单超过24小时没有评价则自动确认 // 待评价的工单超过24小时没有评价则自动确认
final TaskRecord taskRecord = new TaskRecord(); final TaskRecord taskRecord = new TaskRecord();
taskRecord.setTaskId(task.getTaskId()); taskRecord.setTaskId(task.getTaskId());
taskRecord.setContent("超过24小时没有评价的工单系统已自动评价"); taskRecord.setContent("超过24小时没有评价的工单系统已自动评价");
taskRecord.setTenantId(task.getTenantId()); taskRecord.setTenantId(task.getTenantId());
final boolean save = taskRecordService.save(taskRecord); final boolean save = taskRecordService.save(taskRecord);
System.out.println("save = " + save); System.out.println("save = " + save);
System.out.println("超过24小时没有评价的工单已自动确认 = " + task.getTaskId()); System.out.println("超过24小时没有评价的工单已自动确认 = " + task.getTaskId());
}
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
@Scheduled(cron = "* * * * * *")
public void task() {
// 15分钟未支付取消
orderService.update(
new LambdaUpdateWrapper<Order>()
.eq(Order::getPayStatus, 0)
.eq(Order::getOrderStatus, 0)
.apply("now() > DATE_ADD(`create_time`, INTERVAL " + 60 + " MINUTE)")
.set(Order::getOrderStatus, 2)
);
// 7天自动确认收货
requestUtil.setTenantId("10158");
ApiResult<?> dictDataApiResult = requestUtil.getDictData(790);
Map<String, Object> dictDataApiResultData = (Map<String, Object>) dictDataApiResult.getData();
List<Object> dictDataList = (List<Object>) dictDataApiResultData.get("list");
int autoConfirmDay = 0;
for (Object dictData : dictDataList) {
Map<String, Object> dictData1 = JSONUtil.parseObject(JSONUtil.toJSONString(dictData), Map.class);
if (dictData1.get("dictDataName").equals("自动确认收货")) autoConfirmDay = Integer.parseInt(dictData1.get("dictDataCode").toString());
}
// System.out.println("autoConfirmDay = " + autoConfirmDay);
if (autoConfirmDay != 0) {
List<Order> expressOrderList = orderService.list(
new LambdaQueryWrapper<Order>()
.eq(Order::getType, 0)
.eq(Order::getDeliveryType, 0)
.eq(Order::getPayStatus, 1)
.eq(Order::getOrderStatus, 0)
.eq(Order::getDeliveryStatus, 20)
);
if (!expressOrderList.isEmpty()) {
for (Order expressOrder : expressOrderList) {
if (expressOrder.getDeliveryTime() != null &&
DateUtil.offsetDay(expressOrder.getDeliveryTime(), autoConfirmDay).isBeforeOrEquals(new Date())) {
expressOrder.setOrderStatus(1);
orderService.updateById(expressOrder);
orderService.doSettle(expressOrder.getOrderId());
}
}
} }
} catch (Exception e) { }
e.printStackTrace();
}
});
}
} }
} }

View File

@@ -9,11 +9,10 @@ import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.shop.entity.Cart; import com.gxwebsoft.shop.entity.*;
import com.gxwebsoft.shop.entity.Merchant;
import com.gxwebsoft.shop.param.CartParam; import com.gxwebsoft.shop.param.CartParam;
import com.gxwebsoft.shop.service.CartService; import com.gxwebsoft.shop.service.*;
import com.gxwebsoft.shop.service.MerchantService; import com.gxwebsoft.shop.vo.CartShopVo;
import com.gxwebsoft.shop.vo.CartVo; import com.gxwebsoft.shop.vo.CartVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -24,10 +23,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -44,6 +40,12 @@ public class CartController extends BaseController {
private CartService cartService; private CartService cartService;
@Resource @Resource
private MerchantService merchantService; private MerchantService merchantService;
@Resource
private OrderService orderService;
@Resource
private OrderGoodsService orderGoodsService;
@Resource
private GoodsService goodsService;
@ApiOperation("分页查询购物车") @ApiOperation("分页查询购物车")
@GetMapping("/page") @GetMapping("/page")
@@ -62,7 +64,62 @@ public class CartController extends BaseController {
// 附加用户ID // 附加用户ID
param.setUserId(getLoginUserId()); param.setUserId(getLoginUserId());
param.setLoginUser(getLoginUser()); param.setLoginUser(getLoginUser());
return success(cartService.listRel(param)); if (param.getOrderId() != null) {
Order order = orderService.getById(param.getOrderId());
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(order.getOrderId());
Merchant merchant = null;
if (order.getType().equals(1)) {
merchant = merchantService.getById(order.getMerchantId());
} else {
if (order.getDeliveryType().equals(0)) {
merchant = merchantService.getById(orderGoodsList.get(0).getMerchantId());
} else {
merchant = merchantService.getById(order.getSelfTakeMerchantId());
}
}
CartVo cartVo = new CartVo();
List<CartShopVo> shops = new ArrayList<>();
CartShopVo cartShopVo = new CartShopVo();
cartShopVo.setShopLogo(merchant.getImage());
cartShopVo.setShopName(merchant.getMerchantName());
cartShopVo.setShopId(merchant.getMerchantId());
int selectedNum = 0;
int totalNum = 0;
BigDecimal totalPrice = BigDecimal.ZERO;
List<Cart> cartList = new ArrayList<>();
for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = goodsService.getById(orderGoods.getGoodsId());
Merchant goodsMerchant = merchantService.getById(orderGoods.getMerchantId());
Cart cart = new Cart();
cart.setAddress(goodsMerchant.getAddress());
cart.setCartNum(orderGoods.getTotalNum());
cart.setGoods(goods);
cart.setGoodsId(orderGoods.getGoodsId());
cart.setGoodsName(goods.getGoodsName());
cart.setImage(goods.getImage());
cart.setMerchantId(goodsMerchant.getMerchantId());
cart.setMerchantName(goodsMerchant.getMerchantName());
cart.setPrice(orderGoods.getPrice());
cart.setSelected(true);
cart.setTenantId(orderGoods.getTenantId());
cart.setUserId(orderGoods.getUserId());
cart.setTotalPrice(orderGoods.getPrice().multiply(BigDecimal.valueOf(orderGoods.getTotalNum())));
cartList.add(cart);
selectedNum += orderGoods.getTotalNum();
totalNum += orderGoods.getTotalNum();
totalPrice = totalPrice.add(cart.getTotalPrice());
}
cartShopVo.setCarts(cartList);
cartShopVo.setMerchant(merchant);
shops.add(cartShopVo);
cartVo.setShops(shops);
cartVo.setSelectNums(Long.valueOf(selectedNum));
cartVo.setTotalNums(Long.valueOf(totalNum));
cartVo.setTotalPrice(totalPrice);
return success(cartVo);
} else return success(cartService.listRel(param));
} }
@PreAuthorize("hasAuthority('shop:cart:list')") @PreAuthorize("hasAuthority('shop:cart:list')")
@@ -96,7 +153,7 @@ public class CartController extends BaseController {
.eq(Cart::getGoodsId, cart.getGoodsId()) .eq(Cart::getGoodsId, cart.getGoodsId())
.eq(Cart::getUserId, cart.getUserId()) .eq(Cart::getUserId, cart.getUserId())
.eq(Cart::getType, cart.getType()); .eq(Cart::getType, cart.getType());
if (cart.getSpec() != null) cartLambdaQueryWrapper.eq(Cart::getSpec, cart.getSpec()); if (cart.getSpec() != null && !cart.getSpec().isEmpty()) cartLambdaQueryWrapper.eq(Cart::getSpec, cart.getSpec());
cartLambdaQueryWrapper.last("limit 1"); cartLambdaQueryWrapper.last("limit 1");
final Cart one = cartService.getOne(cartLambdaQueryWrapper); final Cart one = cartService.getOne(cartLambdaQueryWrapper);
if (ObjectUtil.isNotEmpty(one)) { if (ObjectUtil.isNotEmpty(one)) {
@@ -104,6 +161,9 @@ public class CartController extends BaseController {
one.setCartNum(one.getCartNum() + cart.getCartNum()); one.setCartNum(one.getCartNum() + cart.getCartNum());
cartService.updateById(one); cartService.updateById(one);
return success("添加成功", one.getId()); return success("添加成功", one.getId());
} else {
cartService.save(cart);
return success("添加成功", cart.getId());
} }
} }
if (cartService.save(cart)) { if (cartService.save(cart)) {

View File

@@ -1,6 +1,7 @@
package com.gxwebsoft.shop.controller; package com.gxwebsoft.shop.controller;
import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.shop.entity.Order;
import com.gxwebsoft.shop.service.DealerCapitalService; import com.gxwebsoft.shop.service.DealerCapitalService;
import com.gxwebsoft.shop.entity.DealerCapital; import com.gxwebsoft.shop.entity.DealerCapital;
import com.gxwebsoft.shop.param.DealerCapitalParam; import com.gxwebsoft.shop.param.DealerCapitalParam;
@@ -10,6 +11,7 @@ import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.core.annotation.OperationLog; import com.gxwebsoft.common.core.annotation.OperationLog;
import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.shop.service.OrderService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -30,6 +32,8 @@ import java.util.List;
public class DealerCapitalController extends BaseController { public class DealerCapitalController extends BaseController {
@Resource @Resource
private DealerCapitalService dealerCapitalService; private DealerCapitalService dealerCapitalService;
@Resource
private OrderService orderService;
@ApiOperation("分页查询分销商资金明细表") @ApiOperation("分页查询分销商资金明细表")
@GetMapping("/page") @GetMapping("/page")
@@ -38,6 +42,21 @@ public class DealerCapitalController extends BaseController {
return success(dealerCapitalService.pageRel(param)); return success(dealerCapitalService.pageRel(param));
} }
@ApiOperation("查询全部分销商资金明细表")
@GetMapping("/list-for-user")
public ApiResult<?> listForUser(DealerCapitalParam param) {
if (getLoginUser() != null) param.setUserId(getLoginUserId());
else return fail("请先登录");
// 使用关联查询
List<DealerCapital> dealerCapitalList = dealerCapitalService.listRel(param);
if (!dealerCapitalList.isEmpty()) {
for (DealerCapital dealerCapital : dealerCapitalList) {
dealerCapital.setOrder(orderService.getById(dealerCapital.getOrderId()));
}
}
return success(dealerCapitalList);
}
@ApiOperation("查询全部分销商资金明细表") @ApiOperation("查询全部分销商资金明细表")
@GetMapping() @GetMapping()
public ApiResult<List<DealerCapital>> list(DealerCapitalParam param) { public ApiResult<List<DealerCapital>> list(DealerCapitalParam param) {
@@ -59,7 +78,7 @@ public class DealerCapitalController extends BaseController {
// 记录当前登录用户id // 记录当前登录用户id
User loginUser = getLoginUser(); User loginUser = getLoginUser();
if (loginUser != null) { if (loginUser != null) {
dealerCapital.setUserId(loginUser.getUserId()); dealerCapital.setUserId(loginUser.getUserId());
} }
if (dealerCapitalService.save(dealerCapital)) { if (dealerCapitalService.save(dealerCapital)) {
return success("添加成功"); return success("添加成功");

View File

@@ -19,6 +19,7 @@ import com.gxwebsoft.shop.param.DealerUserParam;
import com.gxwebsoft.shop.service.DealerUserService; import com.gxwebsoft.shop.service.DealerUserService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -46,6 +47,8 @@ public class DealerUserController extends BaseController {
@Resource @Resource
private ConfigProperties config; private ConfigProperties config;
// @Value("${config.server-url}")
final private String serverUrl = "https://nbg-img.websoft.top";
@ApiOperation("生成专属二维码") @ApiOperation("生成专属二维码")
@GetMapping("/getDealerUserQrcode") @GetMapping("/getDealerUserQrcode")
@@ -62,8 +65,12 @@ public class DealerUserController extends BaseController {
final HashMap<String, Object> map = new HashMap<>(); final HashMap<String, Object> map = new HashMap<>();
map.put("scene", loginUserId); map.put("scene", loginUserId);
map.put("page", "package/dealer/invite"); map.put("page", "package/dealer/invite");
map.put("env_version", "trial"); // 正式版为"release",体验版为"trial",开发版为"develop" map.put("env_version", "release"); // 正式版为"release",体验版为"trial",开发版为"develop"
HttpResponse response = HttpRequest.post(apiUrl)
.body(JSON.toJSONString(map))
.execute();
System.out.println("response = " + response);
// 获取图片 Buffer // 获取图片 Buffer
byte[] qrCode = HttpRequest.post(apiUrl) byte[] qrCode = HttpRequest.post(apiUrl)
.body(JSON.toJSONString(map)) .body(JSON.toJSONString(map))
@@ -72,11 +79,11 @@ public class DealerUserController extends BaseController {
// // 保存的文件名称 // // 保存的文件名称
final String fileName = loginUserId.toString().concat(".png"); final String fileName = loginUserId.toString().concat(".png");
// 保存路径 // 保存路径
String filePath = getUploadDir().concat("user-code/") + fileName; String filePath = getUploadDir().concat("qr/userCode_") + fileName;
File file = FileUtil.writeBytes(qrCode, filePath); File file = FileUtil.writeBytes(qrCode, filePath);
if (file != null) { if (file != null) {
final String qrcode = config.getFileServer().concat("/user-code/").concat(fileName); final String qrcode = serverUrl.concat("/qr/userCode_").concat(fileName);
dealerUser.setQrcode(qrcode); dealerUser.setQrcode(qrcode);
dealerUserService.updateById(dealerUser); dealerUserService.updateById(dealerUser);
return success("操作成功", qrcode); return success("操作成功", qrcode);
@@ -208,6 +215,6 @@ public class DealerUserController extends BaseController {
private String getUploadDir() { private String getUploadDir() {
return config.getUploadPath() + "file/"; return config.getUploadPath();
} }
} }

View File

@@ -26,6 +26,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -191,6 +192,17 @@ public class GoodsCategoryController extends BaseController {
v.setGoodsSpecValue(JSONUtil.parseObject(spec.getSpecValue(), Object.class)); v.setGoodsSpecValue(JSONUtil.parseObject(spec.getSpecValue(), Object.class));
} }
} }
BigDecimal originPrice = v.getPrice();
v.setPrice(v.getSalePrice());
if (getLoginUser().getGradeId().equals(33)) {
if (v.getDealerGift()) v.setShowGift(true);
v.setPrice(v.getDealerPrice());
}
// 会员店
if (getLoginUser().getGradeId().equals(31)) {
v.setPrice(originPrice);
if (v.getPriceGift()) v.setShowGift(true);
}
}); });
d.setGoods(collectGoods.get(d.getCategoryId())); d.setGoods(collectGoods.get(d.getCategoryId()));
} }

View File

@@ -22,6 +22,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -86,10 +87,13 @@ public class GoodsController extends BaseController {
// 整理商品价格 // 整理商品价格
final User loginUser = getLoginUser(); final User loginUser = getLoginUser();
if (loginUser != null) { if (loginUser != null) {
BigDecimal originPrice = goods.getPrice();
goods.setPrice(goods.getSalePrice());
if (loginUser.getGradeId().equals(33)) { if (loginUser.getGradeId().equals(33)) {
goods.setPrice(goods.getDealerPrice()); goods.setPrice(goods.getDealerPrice());
} }
if (loginUser.getGradeId().equals(0)) { if (loginUser.getGradeId().equals(0)) {
goods.setPrice(originPrice);
goods.setPrice(goods.getSalePrice()); goods.setPrice(goods.getSalePrice());
} }
} else { } else {

View File

@@ -1,6 +1,7 @@
package com.gxwebsoft.shop.controller; package com.gxwebsoft.shop.controller;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.utils.RequestUtil; import com.gxwebsoft.common.core.utils.RequestUtil;
@@ -96,18 +97,19 @@ public class MerchantApplyController extends BaseController {
@ApiOperation("修改商户入驻申请") @ApiOperation("修改商户入驻申请")
@PutMapping() @PutMapping()
public ApiResult<?> update(@RequestBody MerchantApply merchantApply, HttpServletRequest request) { public ApiResult<?> update(@RequestBody MerchantApply merchantApply, HttpServletRequest request) {
MerchantApply merchantApply1 = merchantApplyService.getByIdRel(merchantApply.getApplyId());
if (merchantApply.getStatus().equals(1)) { if (merchantApply.getStatus().equals(1)) {
// TODO 审核通过则创建商户 // TODO 审核通过则创建商户
final Merchant one = merchantService.getOne(new LambdaQueryWrapper<Merchant>().eq(Merchant::getPhone, merchantApply.getPhone()).last("limit 1")); final Merchant one = merchantService.getOne(new LambdaQueryWrapper<Merchant>().eq(Merchant::getPhone, merchantApply1.getPhone()).last("limit 1"));
final MerchantAccount merchantAccount = new MerchantAccount(); final MerchantAccount merchantAccount = new MerchantAccount();
BeanUtils.copyProperties(merchantApply, merchantAccount); BeanUtils.copyProperties(merchantApply1, merchantAccount);
final User user = new User(); final User user = new User();
final User loingUser = new User(); final User loingUser = new User();
loingUser.setUserId(merchantAccount.getUserId()); loingUser.setUserId(merchantAccount.getUserId());
Integer gradeId = 30; Integer gradeId = 30;
if (ObjectUtil.isNotEmpty(one)) { if (ObjectUtil.isNotEmpty(one)) {
BeanUtils.copyProperties(merchantApply, one); BeanUtils.copyProperties(merchantApply1, one);
one.setStatus(0); one.setStatus(0);
merchantService.updateById(one); merchantService.updateById(one);
user.setMerchantId(one.getMerchantId()); user.setMerchantId(one.getMerchantId());
@@ -122,8 +124,11 @@ public class MerchantApplyController extends BaseController {
loingUser.setGradeName(one.getShopType()); loingUser.setGradeName(one.getShopType());
} else { } else {
final Merchant merchant = new Merchant(); final Merchant merchant = new Merchant();
BeanUtils.copyProperties(merchantApply, merchant); BeanUtils.copyProperties(merchantApply1, merchant);
merchant.setStatus(0); merchant.setStatus(0);
List<String> lngNLat = StrUtil.split(merchantApply1.getLngAndLat(), ",");
merchant.setLng(lngNLat.get(0));
merchant.setLat(lngNLat.get(1));
merchantService.save(merchant); merchantService.save(merchant);
user.setMerchantId(merchant.getMerchantId()); user.setMerchantId(merchant.getMerchantId());
user.setMerchantName(merchant.getMerchantName()); user.setMerchantName(merchant.getMerchantName());
@@ -142,25 +147,25 @@ public class MerchantApplyController extends BaseController {
// TODO 创建商户账号 // TODO 创建商户账号
requestUtil.setAccessToken(JwtUtil.getAccessToken(request)); requestUtil.setAccessToken(JwtUtil.getAccessToken(request));
requestUtil.setTenantId(getTenantId().toString()); requestUtil.setTenantId(getTenantId().toString());
merchantAccount.setRealName(merchantApply.getRealName()); merchantAccount.setRealName(merchantApply1.getRealName());
requestUtil.saveUserByPhone(merchantAccount); requestUtil.saveUserByPhone(merchantAccount);
requestUtil.updateUser(loingUser); requestUtil.updateUser(loingUser);
// TODO 更新用户表的商户ID // TODO 更新用户表的商户ID
requestUtil.updateUserMerchantId(user); requestUtil.updateUserMerchantId(user);
DealerUser check = dealerUserService.getByUserId(merchantApply.getUserId()); DealerUser check = dealerUserService.getByUserId(merchantApply1.getUserId());
if (check == null) { if (check == null) {
DealerUser dealerUser = new DealerUser(); DealerUser dealerUser = new DealerUser();
dealerUser.setUserId(merchantApply.getUserId()); dealerUser.setUserId(merchantApply1.getUserId());
dealerUser.setRealName(merchantApply.getRealName()); dealerUser.setRealName(merchantApply1.getRealName());
dealerUser.setMobile(merchantApply.getPhone()); dealerUser.setMobile(merchantApply1.getPhone());
dealerUserService.save(dealerUser); dealerUserService.save(dealerUser);
User parentUser = requestUtil.getParent(merchantApply.getUserId()); User parentUser = requestUtil.getParent(merchantApply1.getUserId());
if (parentUser != null) { if (parentUser != null) {
dealerUser.setRefereeId(parentUser.getUserId()); dealerUser.setRefereeId(parentUser.getUserId());
if (merchantApply.getRefereeId() != null) { if (merchantApply1.getRefereeId() != null) {
// 上级 // 上级
DealerUser dealerUser1 = dealerUserService.getByUserId(merchantApply.getRefereeId()); DealerUser dealerUser1 = dealerUserService.getByUserId(merchantApply1.getRefereeId());
dealerUser1.setFirstNum(dealerUser1.getFirstNum() + 1); dealerUser1.setFirstNum(dealerUser1.getFirstNum() + 1);
dealerUserService.updateById(dealerUser1); dealerUserService.updateById(dealerUser1);
@@ -176,7 +181,7 @@ public class MerchantApplyController extends BaseController {
} }
// TODO 驳回 // TODO 驳回
if (merchantApplyService.updateById(merchantApply)) { if (merchantApplyService.updateById(merchantApply1)) {
return success("修改成功"); return success("修改成功");
} }
return fail("修改失败"); return fail("修改失败");

View File

@@ -374,10 +374,22 @@ public class OrderController extends BaseController {
if (order1.getOrderStatus().equals(1)) return fail("订单已完成"); if (order1.getOrderStatus().equals(1)) return fail("订单已完成");
order1.setOrderStatus(1); order1.setOrderStatus(1);
orderService.updateById(order1); orderService.updateById(order1);
orderService.settle(access_token, getTenantId().toString(), order1); orderService.doSettle(order1.getOrderId());
return success("提货成功"); return success("提货成功");
} }
@ApiOperation("商城发货订单确认收货")
@PostMapping("/delivery-confirm")
public ApiResult<?> deliveryConfirm(@RequestBody Order order, HttpServletRequest request) {
String access_token = JwtUtil.getAccessToken(request);
Order order1 = orderService.getById(order.getOrderId());
if (order1.getOrderStatus().equals(1)) return fail("订单已完成");
order1.setOrderStatus(1);
orderService.updateById(order1);
orderService.doSettle(order1.getOrderId());
return success("确认收货成功");
}
@ApiOperation("外卖确认收货") @ApiOperation("外卖确认收货")
@PostMapping("/out-take-confirm") @PostMapping("/out-take-confirm")
public ApiResult<?> outTakeConfirm(@RequestBody Order order, HttpServletRequest request) { public ApiResult<?> outTakeConfirm(@RequestBody Order order, HttpServletRequest request) {
@@ -387,7 +399,7 @@ public class OrderController extends BaseController {
order1.setOrderStatus(1); order1.setOrderStatus(1);
order1.setHasTakeGift(order.getHasTakeGift()); order1.setHasTakeGift(order.getHasTakeGift());
orderService.updateById(order1); orderService.updateById(order1);
orderService.settle(access_token, getTenantId().toString(), order1); orderService.doSettle(order1.getOrderId());
return success("外卖确认收货"); return success("外卖确认收货");
} }

View File

@@ -1,11 +1,21 @@
package com.gxwebsoft.shop.controller; package com.gxwebsoft.shop.controller;
import cn.binarywang.wx.miniapp.api.WxMaOrderShippingService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaOrderShippingServiceImpl;
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.utils.JSONUtil; import com.gxwebsoft.common.core.utils.JSONUtil;
import com.gxwebsoft.common.core.utils.RequestUtil;
import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.shop.config.WxMaProperties;
import com.gxwebsoft.shop.entity.*; import com.gxwebsoft.shop.entity.*;
import com.gxwebsoft.shop.param.GoodsStockInMerchantParam; import com.gxwebsoft.shop.param.GoodsStockInMerchantParam;
import com.gxwebsoft.shop.service.*; import com.gxwebsoft.shop.service.*;
@@ -22,16 +32,17 @@ import com.kuaidi100.sdk.response.BOrderResp;
import com.kuaidi100.sdk.response.SubscribeResp; import com.kuaidi100.sdk.response.SubscribeResp;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List; import static com.gxwebsoft.shop.consts.OrderPayType.PAY_TYPE_FRIEND;
import java.util.Map; import static com.gxwebsoft.shop.consts.OrderPayType.PAY_TYPE_WECHAT;
/** /**
* 发货单控制器 * 发货单控制器
@@ -57,6 +68,13 @@ public class OrderDeliveryController extends BaseController {
private GoodsStockInMerchantService goodsStockInMerchantService; private GoodsStockInMerchantService goodsStockInMerchantService;
@Resource @Resource
private MerchantService merchantService; private MerchantService merchantService;
@Resource
private WxMaProperties wxMaProperties;
@Autowired
private WeChatController weChatController;
@Autowired
private RequestUtil requestUtil;
@ApiOperation("分页查询发货单") @ApiOperation("分页查询发货单")
@GetMapping("/page") @GetMapping("/page")
@@ -115,6 +133,7 @@ public class OrderDeliveryController extends BaseController {
} }
} }
merchant = merchantService.getById(goodsStockInMerchantList.get(0).getMerchantId()); merchant = merchantService.getById(goodsStockInMerchantList.get(0).getMerchantId());
// merchant = merchantService.getById(3095);
if (merchant != null) { if (merchant != null) {
// 商家发货 // 商家发货
Express express = expressService.getByIdRel(orderDelivery.getExpressId()); Express express = expressService.getByIdRel(orderDelivery.getExpressId());
@@ -142,8 +161,47 @@ public class OrderDeliveryController extends BaseController {
order.setDeliveryStatus(20); order.setDeliveryStatus(20);
order.setDeliveryTime(DateUtil.date()); order.setDeliveryTime(DateUtil.date());
orderService.updateById(order); orderService.updateById(order);
// 结算
orderService.settle(access_token, tenantId, order); if (order.getPayType().equals(PAY_TYPE_WECHAT) || (order.getPayType().equals(PAY_TYPE_FRIEND) && order.getFriendPayType().equals(PAY_TYPE_WECHAT))) {
User user = requestUtil.getByUserId(order.getPayUserId());
// 上传小程序发货信息
WxMaOrderShippingInfoUploadRequest uploadRequest = new WxMaOrderShippingInfoUploadRequest();
uploadRequest.setLogisticsType(1);
uploadRequest.setDeliveryMode(1);
OrderKeyBean orderKeyBean = new OrderKeyBean();
orderKeyBean.setOrderNumberType(2);
orderKeyBean.setTransactionId(order.getTransactionId());
uploadRequest.setOrderKey(orderKeyBean);
uploadRequest.setOrderKey(orderKeyBean);
List<ShippingListBean> shippingList = new ArrayList<>();
ShippingListBean shippingListBean = new ShippingListBean();
shippingListBean.setTrackingNo((String) bOrderData.get("kuaidinum"));
shippingListBean.setExpressCompany(express.getWxCode());
ContactBean contactBean = new ContactBean();
contactBean.setReceiverContact(user.getMobile());
shippingListBean.setContact(contactBean);
shippingList.add(shippingListBean);
uploadRequest.setShippingList(shippingList);
String itemDesc = orderGoodsList.get(0).getGoods().getGoodsName();
if (orderGoodsList.size() > 1) itemDesc += "" + orderGoodsList.size() + "件商品";
shippingListBean.setItemDesc(itemDesc);
uploadRequest.setUploadTime(new DateTime().toString(DatePattern.UTC_WITH_ZONE_OFFSET_PATTERN));
PayerBean payerBean = new PayerBean();
payerBean.setOpenid(user.getOpenid());
uploadRequest.setPayer(payerBean);
WxMaService wxMaService = weChatController.wxMaService();
WxMaOrderShippingService wxMaOrderShippingService = new WxMaOrderShippingServiceImpl(wxMaService);
WxMaOrderShippingInfoBaseResponse response = wxMaOrderShippingService.upload(uploadRequest);
System.out.println("response" + response);
}
return success("操作成功"); return success("操作成功");
} }
} }

View File

@@ -95,7 +95,7 @@ public class WxPayNotifyNbgController extends BaseController {
// TODO 4. 清除购物车 // TODO 4. 清除购物车
final boolean remove = cartService.remove(new LambdaQueryWrapper<Cart>().eq(Cart::getUserId, order.getUserId()).eq(Cart::getIsNew, true)); final boolean remove = cartService.remove(new LambdaQueryWrapper<Cart>().eq(Cart::getUserId, order.getUserId()).eq(Cart::getIsNew, true));
System.out.println("remove = " + remove); System.out.println("remove = " + remove);
orderService.settle(order);
// TODO 5.累计会员积分 // TODO 5.累计会员积分

View File

@@ -1,6 +1,8 @@
package com.gxwebsoft.shop.entity; package com.gxwebsoft.shop.entity;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@@ -41,11 +43,14 @@ public class DealerCapital implements Serializable {
private BigDecimal money; private BigDecimal money;
@ApiModelProperty(value = "描述") @ApiModelProperty(value = "描述")
@TableField(value = "`describe`")
private String describe; private String describe;
@ApiModelProperty(value = "对方用户ID") @ApiModelProperty(value = "对方用户ID")
private Integer toUserId; private Integer toUserId;
private Integer status;
@ApiModelProperty(value = "商城ID") @ApiModelProperty(value = "商城ID")
private Integer tenantId; private Integer tenantId;
@@ -55,4 +60,7 @@ public class DealerCapital implements Serializable {
@ApiModelProperty(value = "修改时间") @ApiModelProperty(value = "修改时间")
private LocalDateTime updateTime; private LocalDateTime updateTime;
@TableField(exist = false)
private Order order;
} }

View File

@@ -33,6 +33,9 @@ public class Express implements Serializable {
@ApiModelProperty(value = "物流公司名称") @ApiModelProperty(value = "物流公司名称")
private String expressName; private String expressName;
@ApiModelProperty(value = "物流公司编码 (微信)")
private String wxCode;
@ApiModelProperty(value = "物流公司编码 (快递100)") @ApiModelProperty(value = "物流公司编码 (快递100)")
private String kuaidi100Code; private String kuaidi100Code;

View File

@@ -80,6 +80,15 @@ public class Goods implements Serializable {
@ApiModelProperty(value = "进货价格") @ApiModelProperty(value = "进货价格")
private BigDecimal price; private BigDecimal price;
@ApiModelProperty(value = "会员店直推分佣")
private BigDecimal memberStoreCommission;
@ApiModelProperty(value = "供应商直推分佣")
private BigDecimal supplierCommission;
@ApiModelProperty(value = "合作伙伴直推分佣")
private BigDecimal coopCommission;
@ApiModelProperty(value = "销售价格") @ApiModelProperty(value = "销售价格")
private BigDecimal salePrice; private BigDecimal salePrice;
@@ -116,6 +125,9 @@ public class Goods implements Serializable {
@ApiModelProperty(value = "赠品数(会员店)") @ApiModelProperty(value = "赠品数(会员店)")
private Integer priceGiftNum; private Integer priceGiftNum;
@ApiModelProperty(value = "赠品名(会员店)")
private String priceGiftName;
@ApiModelProperty(value = "赠品数(经销商)") @ApiModelProperty(value = "赠品数(经销商)")
private Integer dealerGiftNum; private Integer dealerGiftNum;
@@ -140,6 +152,8 @@ public class Goods implements Serializable {
@ApiModelProperty(value = "商户ID") @ApiModelProperty(value = "商户ID")
private Integer merchantId; private Integer merchantId;
private Integer canExpress;
@ApiModelProperty(value = "商户名称") @ApiModelProperty(value = "商户名称")
private String merchantName; private String merchantName;

View File

@@ -40,6 +40,8 @@ public class Merchant implements Serializable {
@ApiModelProperty(value = "商户图标") @ApiModelProperty(value = "商户图标")
private String image; private String image;
private String swiper;
@ApiModelProperty(value = "商户手机号") @ApiModelProperty(value = "商户手机号")
private String phone; private String phone;

View File

@@ -63,12 +63,22 @@ public class MerchantApply implements Serializable {
@ApiModelProperty(value = "商户分类") @ApiModelProperty(value = "商户分类")
private String category; private String category;
@ApiModelProperty(value = "经营分类ID")
private Integer merchantCategoryId;
@ApiModelProperty(value = "经营分类ID")
private String merchantCategoryTitle;
@ApiModelProperty(value = "手续费") @ApiModelProperty(value = "手续费")
private BigDecimal commission; private BigDecimal commission;
@ApiModelProperty(value = "关键字") @ApiModelProperty(value = "关键字")
private String keywords; private String keywords;
private String startTime;
private String endTime;
@ApiModelProperty(value = "营业执照") @ApiModelProperty(value = "营业执照")
private String yyzz; private String yyzz;

View File

@@ -34,6 +34,8 @@ public class UserBalanceLog implements Serializable {
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private Integer userId; private Integer userId;
private Integer orderId;
@ApiModelProperty(value = "余额变动场景(10用户充值 20用户消费 30管理员操作 40订单退款)") @ApiModelProperty(value = "余额变动场景(10用户充值 20用户消费 30管理员操作 40订单退款)")
private Integer scene; private Integer scene;

View File

@@ -94,4 +94,7 @@ public class CartParam extends BaseParam {
@TableField(exist = false) @TableField(exist = false)
private Boolean withMerchantInfo; private Boolean withMerchantInfo;
@TableField(exist = false)
private Integer orderId;
} }

View File

@@ -39,4 +39,5 @@ public interface DealerCapitalService extends IService<DealerCapital> {
*/ */
DealerCapital getByIdRel(Integer id); DealerCapital getByIdRel(Integer id);
List<DealerCapital> unSettleList(Integer orderId);
} }

View File

@@ -49,7 +49,11 @@ public interface OrderService extends IService<Order> {
Boolean payByBalance(Order order); Boolean payByBalance(Order order);
void settle(Order order);
void settle(String token, String tenantId, Order order); void settle(String token, String tenantId, Order order);
void doSettle(Integer orderId);
// String payByWxNative(Order order); // String payByWxNative(Order order);
} }

View File

@@ -39,4 +39,5 @@ public interface UserBalanceLogService extends IService<UserBalanceLog> {
*/ */
UserBalanceLog getByIdRel(Integer logId); UserBalanceLog getByIdRel(Integer logId);
List<UserBalanceLog> unSettleList(Integer orderId);
} }

View File

@@ -1,5 +1,6 @@
package com.gxwebsoft.shop.service.impl; package com.gxwebsoft.shop.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.shop.mapper.DealerCapitalMapper; import com.gxwebsoft.shop.mapper.DealerCapitalMapper;
import com.gxwebsoft.shop.service.DealerCapitalService; import com.gxwebsoft.shop.service.DealerCapitalService;
@@ -44,4 +45,13 @@ public class DealerCapitalServiceImpl extends ServiceImpl<DealerCapitalMapper, D
return param.getOne(baseMapper.selectListRel(param)); return param.getOne(baseMapper.selectListRel(param));
} }
@Override
public List<DealerCapital> unSettleList(Integer orderId) {
return list(
new LambdaQueryWrapper<DealerCapital>()
.eq(DealerCapital::getOrderId, orderId)
.eq(DealerCapital::getStatus, 0)
);
}
} }

View File

@@ -12,7 +12,6 @@ import com.gxwebsoft.cms.entity.Website;
import com.gxwebsoft.cms.entity.WebsiteField; import com.gxwebsoft.cms.entity.WebsiteField;
import com.gxwebsoft.common.core.config.ConfigProperties; import com.gxwebsoft.common.core.config.ConfigProperties;
import com.gxwebsoft.common.core.exception.BusinessException; import com.gxwebsoft.common.core.exception.BusinessException;
import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.utils.RedisUtil;
import com.gxwebsoft.common.core.utils.RequestUtil; import com.gxwebsoft.common.core.utils.RequestUtil;
import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.ApiResult;
@@ -85,6 +84,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private GoodsIncomeConfigService goodsIncomeConfigService; private GoodsIncomeConfigService goodsIncomeConfigService;
@Resource @Resource
private UserBalanceLogService userBalanceLogService; private UserBalanceLogService userBalanceLogService;
@Resource
private DealerCapitalService dealerCapitalService;
// public static String privateKeyPath = "/Users/gxwebsoft/JAVA/com.gxwebsoft.modules/src/main/resources/cert/apiclient_key.pem"; // public static String privateKeyPath = "/Users/gxwebsoft/JAVA/com.gxwebsoft.modules/src/main/resources/cert/apiclient_key.pem";
@@ -326,7 +327,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
} }
// 发起网络请求(更新余额接口) // 发起网络请求(更新余额接口)
final RequestUtil requestUtil = new RequestUtil();
requestUtil.setAccessToken(order.getAccessToken()); requestUtil.setAccessToken(order.getAccessToken());
requestUtil.setTenantId(order.getTenantId().toString()); requestUtil.setTenantId(order.getTenantId().toString());
String api = "/system/user/updateUserBalance"; // 更新余额接口 String api = "/system/user/updateUserBalance"; // 更新余额接口
@@ -363,146 +363,258 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
return true; return true;
} }
@Override
public void settle(Order order) {
settle(null, "10158", order);
}
/*** /***
* 结算 * 结算
* @param order * @param order
*/ */
@Override @Override
public void settle(String token, String tenantId, Order order) { public void settle(String token, String tenantId, Order order) {
System.out.println("here settle");
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(order.getOrderId()); List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(order.getOrderId());
RequestUtil requestUtil = new RequestUtil(); if (token != null) requestUtil.setAccessToken(token);
requestUtil.setAccessToken(token);
requestUtil.setTenantId(tenantId); requestUtil.setTenantId(tenantId);
String balanceApi = "/system/user/updateUserBalance"; // System.out.println(parentRes);
if (order.getType().equals(0)) { if (order.getType().equals(0)) {
User parentUser = requestUtil.getParent(order.getUserId()); User parentUser = requestUtil.getParent(order.getUserId());
// System.out.println(parentRes);
// 上级收入 // 上级收入
System.out.println("parentUser = " + (parentUser != null));
if (parentUser != null) { if (parentUser != null) {
// User parentUser = requestUtil.getUserByPhone(parentRes); // User parentUser = requestUtil.getUserByPhone(parentRes);
Merchant parentMerchant = merchantService.getByUserId(parentUser.getUserId()); Merchant parentMerchant = merchantService.getByUserId(parentUser.getUserId());
System.out.println("parentMerchant = " + (parentMerchant != null));
if (parentMerchant != null) { if (parentMerchant != null) {
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = orderGoods.getGoods(); Goods goods = orderGoods.getGoods();
GoodsIncomeConfig goodsIncomeConfig = goodsIncomeConfigService.check(goods.getGoodsId(), orderGoods.getSkuId(), parentMerchant.getShopType()); System.out.println("goods = " + (goods != null));
if (goodsIncomeConfig != null) { if (goods != null) {
BigDecimal rate = goodsIncomeConfig.getRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP); // 有单独设置优先使用
BigDecimal amountTotal = orderGoods.getPrice().multiply(BigDecimal.valueOf(orderGoods.getTotalNum())); BigDecimal parentCommission = null;
BigDecimal incomeTotal = amountTotal.multiply(rate); switch (parentMerchant.getShopType()) {
BigDecimal newBalance = parentUser.getBalance().add(incomeTotal); case "会员店" -> parentCommission = goods.getMemberStoreCommission();
parentUser.setBalance(newBalance); case "供应商" -> parentCommission = goods.getSupplierCommission();
requestUtil.updateUserBalance(balanceApi, parentUser); case "合作伙伴" -> parentCommission = goods.getCoopCommission();
}
System.out.println("parentCommission = " + (parentCommission != null));
if (parentCommission != null) {
BigDecimal incomeTotal = parentCommission.multiply(BigDecimal.valueOf(orderGoods.getTotalNum()));
BigDecimal newBalance = parentUser.getBalance().add(incomeTotal);
// parentUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(parentUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(parentUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_DIRECT_INCOME);
setMoney(incomeTotal);
setBalance(newBalance);
setMerchantId(parentMerchant.getMerchantId());
setMerchantCode(parentMerchant.getMerchantCode());
setOrderId(order.getOrderId());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(parentUser.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("发展佣金收入");
setTenantId(getTenantId());
}});
} else {
GoodsIncomeConfig goodsIncomeConfig = goodsIncomeConfigService.check(goods.getGoodsId(), orderGoods.getSkuId(), parentMerchant.getShopType());
System.out.println("goodsIncomeConfig = " + (goodsIncomeConfig != null));
if (goodsIncomeConfig != null) {
BigDecimal rate = goodsIncomeConfig.getRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
BigDecimal amountTotal = orderGoods.getPrice().multiply(BigDecimal.valueOf(orderGoods.getTotalNum()));
BigDecimal incomeTotal = amountTotal.multiply(rate).multiply(BigDecimal.valueOf(orderGoods.getTotalNum()));
BigDecimal newBalance = parentUser.getBalance().add(incomeTotal);
// parentUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(parentUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(parentUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_DIRECT_INCOME);
setMoney(incomeTotal);
setBalance(newBalance);
setMerchantId(parentMerchant.getMerchantId());
setMerchantCode(parentMerchant.getMerchantCode());
setOrderId(order.getOrderId());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(parentUser.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("直推佣金收入");
setTenantId(getTenantId());
}});
}
}
}
}
}
}
// 供应商收入
for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = orderGoods.getGoods();
if (goods != null) {
Merchant supplier = merchantService.getById(goods.getSupplierMerchantId());
if (supplier != null) {
User supplierUser = requestUtil.getByUserIdWithoutLogin(supplier.getUserId());
if (supplierUser != null) {
BigDecimal incomeTotal = goods.getBuyingPrice().multiply(BigDecimal.valueOf(orderGoods.getTotalNum()));
BigDecimal newBalance = supplierUser.getBalance().add(incomeTotal);
// supplierUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(supplierUser);
userBalanceLogService.save(new UserBalanceLog() {{ userBalanceLogService.save(new UserBalanceLog() {{
setUserId(parentUser.getUserId()); setUserId(supplier.getUserId());
setScene(BalanceScene.BALANCE_SCENE_DIRECT_INCOME); setScene(BalanceScene.BALANCE_SCENE_SUPPLIER);
setMoney(incomeTotal); setMoney(incomeTotal);
setBalance(newBalance); setBalance(newBalance);
setMerchantId(parentMerchant.getMerchantId()); setOrderId(order.getOrderId());
setMerchantCode(parentMerchant.getMerchantCode()); setMerchantId(supplier.getMerchantId());
setOrderNo(order.getOrderNo()); setMerchantCode(supplier.getMerchantCode());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(supplier.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("供应商收入");
setTenantId(getTenantId()); setTenantId(getTenantId());
}}); }});
} }
} }
} }
} }
// 供应商收入
for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = orderGoods.getGoods();
Merchant supplier = merchantService.getById(goods.getSupplierMerchantId());
if (supplier != null) {
User supplierUser = requestUtil.getByUserId(supplier.getUserId());
BigDecimal incomeTotal = goods.getBuyingPrice().multiply(BigDecimal.valueOf(orderGoods.getTotalNum()));
BigDecimal newBalance = supplierUser.getBalance().add(incomeTotal);
supplierUser.setBalance(newBalance);
requestUtil.updateUserBalance(balanceApi, supplierUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(supplier.getUserId());
setScene(BalanceScene.BALANCE_SCENE_SUPPLIER);
setMoney(incomeTotal);
setBalance(newBalance);
setOrderNo(order.getOrderNo());
setMerchantId(supplier.getMerchantId());
setMerchantCode(supplier.getMerchantCode());
setTenantId(getTenantId());
}});
}
}
// 发货门店/提货门店收入 // 发货门店/提货门店收入
Merchant merchant = null; Merchant merchant = null;
if (order.getDeliveryType().equals(0)) merchant = merchantService.getById(order.getExpressMerchantId()); if (order.getDeliveryType().equals(0)) merchant = merchantService.getById(order.getExpressMerchantId());
else merchant = merchantService.getById(order.getSelfTakeMerchantId()); else merchant = merchantService.getById(order.getSelfTakeMerchantId());
System.out.println("merchant = " + (merchant != null));
if (merchant != null) { if (merchant != null) {
BigDecimal diffAmountTotal = BigDecimal.ZERO; BigDecimal diffAmountTotal = BigDecimal.ZERO;
BigDecimal buyAmountTotal = BigDecimal.ZERO; BigDecimal buyAmountTotal = BigDecimal.ZERO;
User merchantUser = requestUtil.getByUserId(merchant.getUserId()); User merchantUser = requestUtil.getByUserIdWithoutLogin(merchant.getUserId());
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = orderGoods.getGoods(); Goods goods = orderGoods.getGoods();
BigDecimal merchantAmount = BigDecimal.ZERO; if (goods != null) {
BigDecimal rate = BigDecimal.ZERO; BigDecimal merchantAmount = BigDecimal.ZERO;
switch (merchant.getShopType()) { BigDecimal rate = BigDecimal.ZERO;
case "会员店": { switch (merchant.getShopType()) {
merchantAmount = goods.getMemberStorePrice(); case "会员店": {
rate = goods.getMemberStoreRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP); merchantAmount = goods.getMemberStorePrice();
rate = goods.getMemberStoreRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
}
break;
case "实体连锁店": {
merchantAmount = goods.getChainStorePrice();
rate = goods.getChainStoreRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
}
break;
case "会员超市": {
merchantAmount = goods.getMemberMarketPrice();
rate = goods.getMemberMarketRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
}
break;
} }
break; BigDecimal amountDiff = orderGoods.getPrice().subtract(merchantAmount);
case "实体连锁店": { buyAmountTotal = buyAmountTotal.add(merchantAmount.multiply(BigDecimal.valueOf(orderGoods.getTotalNum())));
merchantAmount = goods.getChainStorePrice(); if (amountDiff.compareTo(BigDecimal.ZERO) > 0) {
rate = goods.getChainStoreRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP); diffAmountTotal = diffAmountTotal.add(amountDiff.multiply(BigDecimal.valueOf(orderGoods.getTotalNum())));
diffAmountTotal = diffAmountTotal.multiply(rate);
} }
break;
case "会员超市": {
merchantAmount = goods.getMemberMarketPrice();
rate = goods.getMemberMarketRate().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP);
}
break;
}
BigDecimal amountDiff = orderGoods.getPrice().subtract(merchantAmount);
buyAmountTotal = buyAmountTotal.add(merchantAmount.multiply(BigDecimal.valueOf(orderGoods.getTotalNum())));
if (amountDiff.compareTo(BigDecimal.ZERO) > 0) {
diffAmountTotal = diffAmountTotal.add(amountDiff.multiply(BigDecimal.valueOf(orderGoods.getTotalNum())));
diffAmountTotal = diffAmountTotal.multiply(rate);
} }
} }
System.out.println("diffAmountTotal = " + diffAmountTotal);
System.out.println("buyAmountTotal = " + buyAmountTotal);
BigDecimal incomeTotal = diffAmountTotal.add(buyAmountTotal); BigDecimal incomeTotal = diffAmountTotal.add(buyAmountTotal);
if (incomeTotal.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal newBalance = merchantUser.getBalance().add(incomeTotal);
// merchantUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(merchantUser);
Merchant finalMerchant = merchant;
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(merchantUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_DIFF);
setMoney(incomeTotal);
setBalance(newBalance);
setOrderId(order.getOrderId());
setMerchantId(finalMerchant.getMerchantId());
setMerchantCode(finalMerchant.getMerchantCode());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(merchantUser.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("发货门店/提货门店收入");
setTenantId(getTenantId());
}});
}
}
} else if (order.getType().equals(1)) {
// 外卖
Merchant merchant = merchantService.getById(order.getMerchantId());
User merchantUser = requestUtil.getByUserIdWithoutLogin(merchant.getUserId());
if (merchantUser != null) {
BigDecimal rate = BigDecimal.ONE.subtract(merchant.getCommission().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP));
BigDecimal amountTotal = order.getTotalPrice();
BigDecimal incomeTotal = amountTotal.multiply(rate);
BigDecimal newBalance = merchantUser.getBalance().add(incomeTotal); BigDecimal newBalance = merchantUser.getBalance().add(incomeTotal);
merchantUser.setBalance(newBalance); // merchantUser.setBalance(newBalance);
requestUtil.updateUserBalance(balanceApi, merchantUser); // requestUtil.updateUserBalanceWithoutLogin(merchantUser);
Merchant finalMerchant = merchant;
userBalanceLogService.save(new UserBalanceLog() {{ userBalanceLogService.save(new UserBalanceLog() {{
setUserId(merchantUser.getUserId()); setUserId(merchantUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_DIFF); setScene(BalanceScene.BALANCE_SCENE_OUT_TAKE);
setMoney(incomeTotal); setMoney(incomeTotal);
setBalance(newBalance); setBalance(newBalance);
setOrderNo(order.getOrderNo()); setMerchantId(merchant.getMerchantId());
setMerchantId(finalMerchant.getMerchantId()); setMerchantCode(merchant.getMerchantCode());
setMerchantCode(finalMerchant.getMerchantCode()); setOrderId(order.getOrderId());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(merchantUser.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("门店外卖收入");
setTenantId(getTenantId()); setTenantId(getTenantId());
}}); }});
} }
} else if (order.getPayType().equals(1)) { }
// 外卖 }
Merchant merchant = merchantService.getById(order.getMerchantId());
User merchantUser = requestUtil.getByUserId(merchant.getUserId());
BigDecimal rate = BigDecimal.ONE.subtract(merchant.getCommission().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP));
BigDecimal amountTotal = order.getTotalPrice();
BigDecimal incomeTotal = amountTotal.multiply(rate);
BigDecimal newBalance = merchantUser.getBalance().add(incomeTotal);
merchantUser.setBalance(newBalance);
requestUtil.updateUserBalance(balanceApi, merchantUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(merchantUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_OUT_TAKE);
setMoney(incomeTotal);
setBalance(newBalance);
setMerchantId(merchant.getMerchantId());
setMerchantCode(merchant.getMerchantCode());
setOrderNo(order.getOrderNo());
setTenantId(getTenantId());
}});
/***
* 实际结算
*/
@Override
public void doSettle(Integer orderId) {
List<DealerCapital> dealerCapitalList = dealerCapitalService.unSettleList(orderId);
List<UserBalanceLog> userBalanceLogList = userBalanceLogService.unSettleList(orderId);
if (!dealerCapitalList.isEmpty()) {
requestUtil.setTenantId("10158");
for (DealerCapital dealerCapital : dealerCapitalList) {
dealerCapital.setStatus(1);
User user = requestUtil.getByUserIdWithoutLogin(dealerCapital.getUserId());
BigDecimal newBalance = user.getBalance().add(dealerCapital.getMoney());
user.setBalance(newBalance);
requestUtil.updateUserBalanceWithoutLogin(user);
}
dealerCapitalService.updateBatchById(dealerCapitalList);
}
if (!userBalanceLogList.isEmpty()) {
for (UserBalanceLog userBalanceLog : userBalanceLogList) {
userBalanceLog.setStatus(1);
}
userBalanceLogService.updateBatchById(userBalanceLogList);
} }
} }
} }

View File

@@ -1,5 +1,6 @@
package com.gxwebsoft.shop.service.impl; package com.gxwebsoft.shop.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.shop.mapper.UserBalanceLogMapper; import com.gxwebsoft.shop.mapper.UserBalanceLogMapper;
import com.gxwebsoft.shop.service.UserBalanceLogService; import com.gxwebsoft.shop.service.UserBalanceLogService;
@@ -44,4 +45,13 @@ public class UserBalanceLogServiceImpl extends ServiceImpl<UserBalanceLogMapper,
return param.getOne(baseMapper.selectListRel(param)); return param.getOne(baseMapper.selectListRel(param));
} }
@Override
public List<UserBalanceLog> unSettleList(Integer orderId) {
return list(
new LambdaQueryWrapper<UserBalanceLog>()
.eq(UserBalanceLog::getOrderId, orderId)
.eq(UserBalanceLog::getStatus, 0)
);
}
} }

View File

@@ -21,6 +21,6 @@ socketio:
# 框架配置 # 框架配置
config: config:
# 开发环境接口 # 开发环境接口
server-url: http://127.0.0.1:9091/api server-url: http://127.0.0.1:9092/api
upload-path: /Users/liangxin/Project/JAVA/nbg-java/file/ upload-path: /Users/liangxin/Project/JAVA/nbg-java/file/
local-upload-path: /Users/liangxin/Project/JAVA/nbg-java/file/ local-upload-path: /Users/liangxin/Project/JAVA/nbg-java/file/

View File

@@ -4,8 +4,8 @@ server:
# 多环境配置 # 多环境配置
spring: spring:
profiles: profiles:
# active: dev active: dev
active: prod # active: prod
application: application:
name: server name: server

File diff suppressed because it is too large Load Diff