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/misc.xml
/.idea/vcs.xml
/file/

View File

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

View File

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

View File

@@ -2,23 +2,13 @@ package com.gxwebsoft.common.core.utils;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.system.entity.Payment;
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.common.system.entity.*;
import com.gxwebsoft.shop.entity.MerchantAccount;
import com.gxwebsoft.shop.entity.Order;
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
import org.springframework.http.*;
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.HashMap;
@@ -121,6 +111,29 @@ public class RequestUtil {
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) {
String path = "/system/user/";
@@ -172,14 +185,29 @@ public class RequestUtil {
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) {
try {
// 链式构建请求
final String result = HttpRequest.get(host.concat("/system/user-referee/getReferee/" + userId))
.header("Authorization", ACCESS_TOKEN)
.header("Tenantid", TENANT_ID)
.timeout(20000)
.execute().body();
System.out.println("result = " + result);
JSONObject jsonObject = JSONObject.parseObject(result);
final String data = jsonObject.getString("data");
return JSONObject.parseObject(data, User.class);
@@ -276,4 +304,20 @@ public class RequestUtil {
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 = "字典数据名称")
private String dictDataName;
@ApiModelProperty(value = "预设字段:路由地址")
private String path;
@ApiModelProperty(value = "预设字段:组件路径")
private String component;
@ApiModelProperty(value = "排序号")
private Integer sortNumber;

View File

@@ -272,6 +272,8 @@ public class User implements UserDetails {
@TableField(exist = false)
private MerchantAccount merchantAccount;
@TableField(exist = false)
private String authCode;
// @ApiModelProperty("企业信息")
// @TableField(exist = false)
// 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.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.RequestUtil;
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.User;
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.TaskRecordService;
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.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -29,6 +36,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static com.gxwebsoft.common.core.constants.TaskConstants.*;
@@ -48,6 +56,10 @@ public class TaskController extends BaseController {
private TaskRecordService taskRecordService;
@Resource
private TaskCountService taskCountService;
@Resource
private OrderService orderService;
@Autowired
private RequestUtil requestUtil;
@ApiOperation("分页查询任务记录表")
@GetMapping("/page")
@@ -72,7 +84,7 @@ public class TaskController extends BaseController {
public ApiResult<Task> get(@PathVariable("id") Integer id) {
// 更新阅读状态
Task task = taskService.getByIdRel(id);
if(!task.getLastReadUser().equals(getLoginUserId())){
if (!task.getLastReadUser().equals(getLoginUserId())) {
task.setIsRead(1);
taskService.updateById(task);
}
@@ -96,7 +108,7 @@ public class TaskController extends BaseController {
task.setLastAvatar(loginUser.getAvatar());
task.setLastReadUser(loginUser.getUserId());
task.setLastNickname(loginUser.getNickname());
if(task.getName() == null){
if (task.getName() == null) {
task.setName(task.getContent());
}
}
@@ -166,7 +178,7 @@ public class TaskController extends BaseController {
@GetMapping("/taskQRCode")
public ApiResult<?> taskQRCode(TaskParam param, HttpServletRequest request) throws IOException {
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);
}
@@ -175,8 +187,8 @@ public class TaskController extends BaseController {
public ApiResult<?> taskJoinQRCode(TaskParam param, HttpServletRequest request) throws IOException {
User loginUser = getLoginUser();
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);
final String qrCode = MyQrCodeUtil.getUserCode(loginUser.getUserId(),url);
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);
return success("操作成功", qrCode);
}
@@ -184,7 +196,7 @@ public class TaskController extends BaseController {
/**
* 每日清零
*/
@Scheduled(cron="0 0 0 * * ?")
@Scheduled(cron = "0 0 0 * * ?")
public void todayTask() {
System.out.println("每日清零任务 = ");
final boolean update = taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getToday, 0));
@@ -194,7 +206,7 @@ public class TaskController extends BaseController {
/**
* 本月清零
*/
@Scheduled(cron="0 0 1 * * ?")
@Scheduled(cron = "0 0 1 * * ?")
public void monthTask() {
taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getMonth, 0));
}
@@ -203,7 +215,7 @@ public class TaskController extends BaseController {
* 每年清零
*/
@Scheduled(cron = "0 0 0 1 * ?")
public void yearTask(){
public void yearTask() {
taskCountService.update(new LambdaUpdateWrapper<TaskCount>().set(TaskCount::getYear, 0));
}
@@ -212,7 +224,7 @@ public class TaskController extends BaseController {
* 1个小时内没有用户再次提交新的回复则自动结算
* 时间间隔2分钟执行一次
*/
@Scheduled(cron="*/30 * * * * *")
@Scheduled(cron = "*/30 * * * * *")
public void updateProgressTask() {
// System.out.println("定时任务开始updateProgressTask = " + DateUtil.now());
TaskParam taskParam = new TaskParam();
@@ -220,7 +232,7 @@ public class TaskController extends BaseController {
// taskParam.setTaskId(689);
taskParam.setLimit(10L);
final PageResult<Task> result = taskService.pageRelAll(taskParam);
if(result.getCount() == 0){
if (result.getCount() == 0) {
return;
}
final List<Task> list = result.getList();
@@ -232,7 +244,7 @@ public class TaskController extends BaseController {
Date date1 = df.parse(newDate.toString());
Date date2 = df.parse(DateUtil.now());
final boolean after = date2.after(date1);
if(after){
if (after) {
// 更新工单状态
task.setProgress(COMPLETED);
task.setStatus(TASK_STATUS_1);
@@ -252,4 +264,48 @@ public class TaskController extends BaseController {
});
}
}
@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());
}
}
}
}
}
}

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.PageResult;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.shop.entity.Cart;
import com.gxwebsoft.shop.entity.Merchant;
import com.gxwebsoft.shop.entity.*;
import com.gxwebsoft.shop.param.CartParam;
import com.gxwebsoft.shop.service.CartService;
import com.gxwebsoft.shop.service.MerchantService;
import com.gxwebsoft.shop.service.*;
import com.gxwebsoft.shop.vo.CartShopVo;
import com.gxwebsoft.shop.vo.CartVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -24,10 +23,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -44,6 +40,12 @@ public class CartController extends BaseController {
private CartService cartService;
@Resource
private MerchantService merchantService;
@Resource
private OrderService orderService;
@Resource
private OrderGoodsService orderGoodsService;
@Resource
private GoodsService goodsService;
@ApiOperation("分页查询购物车")
@GetMapping("/page")
@@ -62,7 +64,62 @@ public class CartController extends BaseController {
// 附加用户ID
param.setUserId(getLoginUserId());
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')")
@@ -96,7 +153,7 @@ public class CartController extends BaseController {
.eq(Cart::getGoodsId, cart.getGoodsId())
.eq(Cart::getUserId, cart.getUserId())
.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");
final Cart one = cartService.getOne(cartLambdaQueryWrapper);
if (ObjectUtil.isNotEmpty(one)) {
@@ -104,6 +161,9 @@ public class CartController extends BaseController {
one.setCartNum(one.getCartNum() + cart.getCartNum());
cartService.updateById(one);
return success("添加成功", one.getId());
} else {
cartService.save(cart);
return success("添加成功", cart.getId());
}
}
if (cartService.save(cart)) {

View File

@@ -1,6 +1,7 @@
package com.gxwebsoft.shop.controller;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.shop.entity.Order;
import com.gxwebsoft.shop.service.DealerCapitalService;
import com.gxwebsoft.shop.entity.DealerCapital;
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.annotation.OperationLog;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.shop.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -30,6 +32,8 @@ import java.util.List;
public class DealerCapitalController extends BaseController {
@Resource
private DealerCapitalService dealerCapitalService;
@Resource
private OrderService orderService;
@ApiOperation("分页查询分销商资金明细表")
@GetMapping("/page")
@@ -38,6 +42,21 @@ public class DealerCapitalController extends BaseController {
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("查询全部分销商资金明细表")
@GetMapping()
public ApiResult<List<DealerCapital>> list(DealerCapitalParam param) {

View File

@@ -19,6 +19,7 @@ import com.gxwebsoft.shop.param.DealerUserParam;
import com.gxwebsoft.shop.service.DealerUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -46,6 +47,8 @@ public class DealerUserController extends BaseController {
@Resource
private ConfigProperties config;
// @Value("${config.server-url}")
final private String serverUrl = "https://nbg-img.websoft.top";
@ApiOperation("生成专属二维码")
@GetMapping("/getDealerUserQrcode")
@@ -62,8 +65,12 @@ public class DealerUserController extends BaseController {
final HashMap<String, Object> map = new HashMap<>();
map.put("scene", loginUserId);
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
byte[] qrCode = HttpRequest.post(apiUrl)
.body(JSON.toJSONString(map))
@@ -72,11 +79,11 @@ public class DealerUserController extends BaseController {
// // 保存的文件名称
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);
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);
dealerUserService.updateById(dealerUser);
return success("操作成功", qrcode);
@@ -208,6 +215,6 @@ public class DealerUserController extends BaseController {
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 javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -191,6 +192,17 @@ public class GoodsCategoryController extends BaseController {
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()));
}

View File

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

View File

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

View File

@@ -374,10 +374,22 @@ public class OrderController extends BaseController {
if (order1.getOrderStatus().equals(1)) return fail("订单已完成");
order1.setOrderStatus(1);
orderService.updateById(order1);
orderService.settle(access_token, getTenantId().toString(), order1);
orderService.doSettle(order1.getOrderId());
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("外卖确认收货")
@PostMapping("/out-take-confirm")
public ApiResult<?> outTakeConfirm(@RequestBody Order order, HttpServletRequest request) {
@@ -387,7 +399,7 @@ public class OrderController extends BaseController {
order1.setOrderStatus(1);
order1.setHasTakeGift(order.getHasTakeGift());
orderService.updateById(order1);
orderService.settle(access_token, getTenantId().toString(), order1);
orderService.doSettle(order1.getOrderId());
return success("外卖确认收货");
}

View File

@@ -1,11 +1,21 @@
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.LocalDateTimeUtil;
import cn.hutool.http.HttpUtil;
import com.google.gson.JsonObject;
import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.utils.JSONUtil;
import com.gxwebsoft.common.core.utils.RequestUtil;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.shop.config.WxMaProperties;
import com.gxwebsoft.shop.entity.*;
import com.gxwebsoft.shop.param.GoodsStockInMerchantParam;
import com.gxwebsoft.shop.service.*;
@@ -22,16 +32,17 @@ import com.kuaidi100.sdk.response.BOrderResp;
import com.kuaidi100.sdk.response.SubscribeResp;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import static com.gxwebsoft.shop.consts.OrderPayType.PAY_TYPE_FRIEND;
import static com.gxwebsoft.shop.consts.OrderPayType.PAY_TYPE_WECHAT;
/**
* 发货单控制器
@@ -57,6 +68,13 @@ public class OrderDeliveryController extends BaseController {
private GoodsStockInMerchantService goodsStockInMerchantService;
@Resource
private MerchantService merchantService;
@Resource
private WxMaProperties wxMaProperties;
@Autowired
private WeChatController weChatController;
@Autowired
private RequestUtil requestUtil;
@ApiOperation("分页查询发货单")
@GetMapping("/page")
@@ -115,6 +133,7 @@ public class OrderDeliveryController extends BaseController {
}
}
merchant = merchantService.getById(goodsStockInMerchantList.get(0).getMerchantId());
// merchant = merchantService.getById(3095);
if (merchant != null) {
// 商家发货
Express express = expressService.getByIdRel(orderDelivery.getExpressId());
@@ -142,8 +161,47 @@ public class OrderDeliveryController extends BaseController {
order.setDeliveryStatus(20);
order.setDeliveryTime(DateUtil.date());
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("操作成功");
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -94,4 +94,7 @@ public class CartParam extends BaseParam {
@TableField(exist = false)
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);
List<DealerCapital> unSettleList(Integer orderId);
}

View File

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

View File

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

View File

@@ -1,5 +1,6 @@
package com.gxwebsoft.shop.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.shop.mapper.DealerCapitalMapper;
import com.gxwebsoft.shop.service.DealerCapitalService;
@@ -44,4 +45,13 @@ public class DealerCapitalServiceImpl extends ServiceImpl<DealerCapitalMapper, D
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.common.core.config.ConfigProperties;
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.RequestUtil;
import com.gxwebsoft.common.core.web.ApiResult;
@@ -85,6 +84,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private GoodsIncomeConfigService goodsIncomeConfigService;
@Resource
private UserBalanceLogService userBalanceLogService;
@Resource
private DealerCapitalService dealerCapitalService;
// 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.setTenantId(order.getTenantId().toString());
String api = "/system/user/updateUserBalance"; // 更新余额接口
@@ -363,35 +363,48 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
return true;
}
@Override
public void settle(Order order) {
settle(null, "10158", order);
}
/***
* 结算
* @param order
*/
@Override
public void settle(String token, String tenantId, Order order) {
System.out.println("here settle");
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(order.getOrderId());
RequestUtil requestUtil = new RequestUtil();
requestUtil.setAccessToken(token);
if (token != null) requestUtil.setAccessToken(token);
requestUtil.setTenantId(tenantId);
String balanceApi = "/system/user/updateUserBalance";
// System.out.println(parentRes);
if (order.getType().equals(0)) {
User parentUser = requestUtil.getParent(order.getUserId());
// System.out.println(parentRes);
// 上级收入
System.out.println("parentUser = " + (parentUser != null));
if (parentUser != null) {
// User parentUser = requestUtil.getUserByPhone(parentRes);
Merchant parentMerchant = merchantService.getByUserId(parentUser.getUserId());
System.out.println("parentMerchant = " + (parentMerchant != null));
if (parentMerchant != null) {
for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = orderGoods.getGoods();
GoodsIncomeConfig goodsIncomeConfig = goodsIncomeConfigService.check(goods.getGoodsId(), orderGoods.getSkuId(), parentMerchant.getShopType());
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);
System.out.println("goods = " + (goods != null));
if (goods != null) {
// 有单独设置优先使用
BigDecimal parentCommission = null;
switch (parentMerchant.getShopType()) {
case "会员店" -> parentCommission = goods.getMemberStoreCommission();
case "供应商" -> parentCommission = goods.getSupplierCommission();
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.updateUserBalance(balanceApi, parentUser);
// parentUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(parentUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(parentUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_DIRECT_INCOME);
@@ -399,46 +412,98 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
setBalance(newBalance);
setMerchantId(parentMerchant.getMerchantId());
setMerchantCode(parentMerchant.getMerchantCode());
setOrderNo(order.getOrderNo());
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.getByUserId(supplier.getUserId());
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.updateUserBalance(balanceApi, supplierUser);
// supplierUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(supplierUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(supplier.getUserId());
setScene(BalanceScene.BALANCE_SCENE_SUPPLIER);
setMoney(incomeTotal);
setBalance(newBalance);
setOrderNo(order.getOrderNo());
setOrderId(order.getOrderId());
setMerchantId(supplier.getMerchantId());
setMerchantCode(supplier.getMerchantCode());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(supplier.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("供应商收入");
setTenantId(getTenantId());
}});
}
}
}
}
// 发货门店/提货门店收入
Merchant merchant = null;
if (order.getDeliveryType().equals(0)) merchant = merchantService.getById(order.getExpressMerchantId());
else merchant = merchantService.getById(order.getSelfTakeMerchantId());
System.out.println("merchant = " + (merchant != null));
if (merchant != null) {
BigDecimal diffAmountTotal = BigDecimal.ZERO;
BigDecimal buyAmountTotal = BigDecimal.ZERO;
User merchantUser = requestUtil.getByUserId(merchant.getUserId());
User merchantUser = requestUtil.getByUserIdWithoutLogin(merchant.getUserId());
for (OrderGoods orderGoods : orderGoodsList) {
Goods goods = orderGoods.getGoods();
if (goods != null) {
BigDecimal merchantAmount = BigDecimal.ZERO;
BigDecimal rate = BigDecimal.ZERO;
switch (merchant.getShopType()) {
@@ -465,33 +530,46 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
diffAmountTotal = diffAmountTotal.multiply(rate);
}
}
}
System.out.println("diffAmountTotal = " + diffAmountTotal);
System.out.println("buyAmountTotal = " + buyAmountTotal);
BigDecimal incomeTotal = diffAmountTotal.add(buyAmountTotal);
if (incomeTotal.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal newBalance = merchantUser.getBalance().add(incomeTotal);
merchantUser.setBalance(newBalance);
requestUtil.updateUserBalance(balanceApi, merchantUser);
// 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);
setOrderNo(order.getOrderNo());
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.getPayType().equals(1)) {
}
} else if (order.getType().equals(1)) {
// 外卖
Merchant merchant = merchantService.getById(order.getMerchantId());
User merchantUser = requestUtil.getByUserId(merchant.getUserId());
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);
merchantUser.setBalance(newBalance);
requestUtil.updateUserBalance(balanceApi, merchantUser);
// merchantUser.setBalance(newBalance);
// requestUtil.updateUserBalanceWithoutLogin(merchantUser);
userBalanceLogService.save(new UserBalanceLog() {{
setUserId(merchantUser.getUserId());
setScene(BalanceScene.BALANCE_SCENE_OUT_TAKE);
@@ -499,10 +577,44 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
setBalance(newBalance);
setMerchantId(merchant.getMerchantId());
setMerchantCode(merchant.getMerchantCode());
setOrderNo(order.getOrderNo());
setOrderId(order.getOrderId());
setTenantId(getTenantId());
}});
dealerCapitalService.save(new DealerCapital() {{
setUserId(merchantUser.getUserId());
setFlowType(10);
setMoney(incomeTotal);
setOrderId(order.getOrderId());
setDescribe("门店外卖收入");
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;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.shop.mapper.UserBalanceLogMapper;
import com.gxwebsoft.shop.service.UserBalanceLogService;
@@ -44,4 +45,13 @@ public class UserBalanceLogServiceImpl extends ServiceImpl<UserBalanceLogMapper,
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:
# 开发环境接口
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/
local-upload-path: /Users/liangxin/Project/JAVA/nbg-java/file/

View File

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

File diff suppressed because it is too large Load Diff