Browse Source

2022年11月8日17:37:12

纪新园 3 years ago
parent
commit
38b2759afc

+ 22 - 5
blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java

@@ -82,7 +82,15 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
 				}
 			}
-			//保存openId
+			/*if (ObjectUtils.isNull(user.getCodeStatus()) || "0".equals(user.getCodeStatus())){
+				user.setCodeStatus("1");
+				//保存openId
+				user.setOpenId(openId);
+			}else{
+				if (!openId.equals(user.getOpenId())){
+					throw new UsernameNotFoundException("登录失败");
+				}
+			}*/
 			user.setOpenId(openId);
 			userClient.updateUser(user);
 
@@ -131,10 +139,14 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 					setFailCount(tenantId, user1.getAccount(), count);
 					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
 				}
-				// 用户存在但密码错误,超过次数则锁定账号
-				if (!grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user1.getPassword().equals(DigestUtil.hex(password))) {
-					setFailCount(tenantId, user1.getAccount(), count);
-					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+				if (ObjectUtils.isNull(openId)){
+					// 用户存在但密码错误,超过次数则锁定账号
+					if (!grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user1.getPassword().equals(DigestUtil.hex(password))) {
+						setFailCount(tenantId, user1.getAccount(), count);
+						throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+					}
+				}else{
+					request.setAttribute(TokenUtil.PASSWORD_KEY,user.getPassword());
 				}
 				// 用户角色不存在
 				if (Func.isEmpty(userInfo.getRoles())) {
@@ -160,6 +172,11 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 				throw new UsernameNotFoundException(result.getMsg());
 			}
 		} else {
+
+
+
+
+
 			if (StringUtil.isAllBlank(headerTenant, paramTenant)) {
 				throw new UserDeniedAuthorizationException(TokenUtil.TENANT_NOT_FOUND);
 			}

+ 17 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Items.java

@@ -247,4 +247,21 @@ public class Items implements Serializable {
 	 */
 	@TableField(exist = false)
 	private BigDecimal currentAmount;
+
+	/**
+	 * 系统编号
+	 */
+	@TableField(exist = false)
+	private String sysNo;
+
+	/**
+	 * 结算日期
+	 */
+	@TableField(exist = false)
+	private Date settlementDate;
+	/**
+	 * 账户
+	 */
+	@TableField(exist = false)
+	private String account;
 }

+ 2 - 7
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java

@@ -207,8 +207,6 @@ public class CorpsDescPartsController extends BladeController {
 		BigDecimal lossRate = new BigDecimal("0.00");
 		//平均客单产值
 		BigDecimal averageAmount = new BigDecimal("0.00");
-		//应收账款
-		BigDecimal debitAmount = new BigDecimal("0.00");
 
 		LambdaQueryWrapper<CorpsDesc> corpsDescQueryWrapper = new LambdaQueryWrapper<>();
 		corpsDescQueryWrapper.eq(CorpsDesc::getIsDeleted, 0).eq(CorpsDesc::getTenantId, AuthUtil.getTenantId()).eq(CorpsDesc::getCorpType, "KH");
@@ -237,12 +235,9 @@ public class CorpsDescPartsController extends BladeController {
 		order.setBillType("XS");
 		order.setTradeType("YPJ");
 		List<Order> orderList = orderDescClient.getByBillNo(order);
-		if (ObjectUtils.isNotNull(orderList)) {
-			//应收账款
-			debitAmount = debitAmount.add(orderList.stream().map(Order::getDebitAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-		}
+
 		//平均客单产值
-		averageAmount = averageAmount.add(debitAmount.divide(new BigDecimal(corpsDescList.size()), MathContext.DECIMAL32));
+		averageAmount = averageAmount.add(new BigDecimal(corpsDescList.size()/orderList.size(),MathContext.DECIMAL32));
 
 		map.put("sumNumber", corpsDescList.size());
 		map.put("coreCorp", coreCorp);

+ 18 - 7
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -693,14 +693,20 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 
 			goodsDescMapper.insert(goodsDesc);
 			// ExcelProperty
+
 			if (!CollectionUtils.isEmpty(filesList)) {
-				filesList.forEach(k -> {
-					k.setTenantId(AuthUtil.getTenantId());
-					k.setPid(goodsDesc.getId());
-					k.setCreateTime(new Date());
-					k.setCreateUser(SecureUtil.getUserId());
-					goodsFilesMapper.insert(k);
-				});
+				int count = 0;
+				for (GoodsFiles goodsFiles : filesList) {
+					if (count == 0) {
+						goodsFiles.setVersion("0");
+					}
+					goodsFiles.setTenantId(AuthUtil.getTenantId());
+					goodsFiles.setPid(goodsDesc.getId());
+					goodsFiles.setCreateTime(new Date());
+					goodsFiles.setCreateUser(SecureUtil.getUserId());
+					goodsFilesMapper.insert(goodsFiles);
+					count++;
+				}
 			}
 			if (!CollectionUtils.isEmpty(stockGoodsList)) {
 				stockGoodsList.forEach(k -> {
@@ -786,6 +792,11 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 				if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
 					goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
 				}
+				if (e.getWhether().equals("是")){
+					goodsDesc.setWhether("1");
+				}else if(e.getWhether().equals("否")){
+					goodsDesc.setWhether("0");
+				}
 				goodsDesc.setType(0L);
 				goodsDesc.setCode(goodsDesc.getCname());
 				goodsDesc.setGoodsTypeId(String.valueOf(goodsType.getId()));

+ 49 - 30
blade-auth/src/main/java/org/springblade/auth/wechat/WechatController.java → blade-service/blade-client/src/main/java/org/springblade/client/wechat/WechatController.java

@@ -1,15 +1,12 @@
-package org.springblade.auth.wechat;
+package org.springblade.client.wechat;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
+import okhttp3.RequestBody;
 import okhttp3.Response;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.config.RequestConfig;
@@ -18,10 +15,15 @@ import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.util.EntityUtils;
-import org.springblade.auth.utils.TokenUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -33,7 +35,7 @@ import java.util.Map;
  * @author BladeX
  */
 @Slf4j
-@AllArgsConstructor
+@RestController
 @RequestMapping("/wechat")
 public class WechatController {
 
@@ -43,25 +45,20 @@ public class WechatController {
 	 * @param code
 	 * @return 结果
 	 */
-	@PostMapping(value = "/programLogin")
-	@ResponseBody
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "获取openId接口", notes = "获取openId接口")
-	public R<Map<String, Object>> weChatProgramLogin(@RequestParam("code") String code) throws IOException {
-		log.info("小程序code=====>"+code);
-		if (StringUtil.isBlank(code)){
+	@GetMapping("programLogin")
+	public R<Map<String, Object>> weChatProgramLogin(@RequestParam("loginCode") String loginCode, @RequestParam("telCode") String telCode) throws IOException {
+		log.info("小程序code=====>" + loginCode);
+		if (StringUtil.isBlank(loginCode)) {
 			throw new SecurityException("登录code获取失败");
 		}
 		Map<String, Object> map = new HashMap<>(16);
 
 		String url = "https://api.weixin.qq.com/sns/jscode2session";
-		/*url += "?appid=wx80f69041c69c25cd";//自己的appid*/
 		//自己的appid
-		url += "?appid=" + TokenUtil.APP_ID;
-		/*url += "&secret=46dd2608845110ab2f3557fc472b54f4";//自己的appSecret*/
+		url += "?appid=wx0a0feca24b695636";
 		//自己的appSecret
-		url += "&secret=" + TokenUtil.APP_SECRET;
-		url += "&js_code=" + code;
+		url += "&secret=b3efb530f9ef97626e2ec31fc7a3af56";
+		url += "&js_code=" + loginCode;
 		url += "&grant_type=authorization_code";
 		url += "&connect_redirect=1";
 
@@ -101,8 +98,9 @@ public class WechatController {
 
 		OkHttpClient client = new OkHttpClient();
 		//获得token
-		Request request = new Request.Builder().url(TokenUtil.ACCESS_TOKEN_URL + "&appid=" + TokenUtil.APP_ID + "&secret=" + TokenUtil.APP_SECRET).build();
+		Request request = new Request.Builder().url("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx0a0feca24b695636&secret=b3efb530f9ef97626e2ec31fc7a3af56").build();
 		try {
+
 			Response responseToken = client.newCall(request).execute();
 			//如果请求成功,解析数据
 			if (responseToken.isSuccessful()) {
@@ -110,31 +108,52 @@ public class WechatController {
 				//得到一个JSON对象
 				JSONObject object = JSON.parseObject(body);
 				String accessToken = object.getString("access_token");
-				if (ObjectUtils.isNotNull(accessToken)) {
+				if (ObjectUtil.isNotEmpty(accessToken)) {
 					log.info("通过code获取token异常:" + object.toJSONString());
-					map.put("accessToken",accessToken);
+					map.put("accessToken", accessToken);
+				} else {
+					throw new RuntimeException("access_token获取失败");
 				}
 			}
 		} catch (IOException e) {
 			e.printStackTrace();
 			log.info("用户获取token异常:" + e);
 		}
-
+		Map<String, String> map1 = new HashMap<>();
+		map1.put("code", telCode);
+		System.out.println(JsonUtil.toJson(map1));
 		//获得手机号
-		Request requestPhone = new Request.Builder().url(TokenUtil.PHONE_URL + "&access_token=" + map.get("accessToken") + "&code=" + code).build();
+		Request requestPhone = new Request.Builder()
+//			.url("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + map.get("accessToken") + "&code=" + telCode)
+			.url("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + map.get("accessToken") + "&")
+			.method("post", RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), JsonUtil.toJson(map1)))
+			.post(RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), JsonUtil.toJson(map1)))
+			.build();
 		try {
+
 			Response responsePhone = client.newCall(requestPhone).execute();
 			//如果请求成功,解析数据
 			if (responsePhone.isSuccessful()) {
 				String body = responsePhone.body().string();
 				//得到一个JSON对象
 				JSONObject object = JSON.parseObject(body);
-				JSONObject jsonObject = object.getJSONObject("phone_info");
-				String phoneNumber = jsonObject.getString("phoneNumber");
-				if (ObjectUtils.isNotNull(phoneNumber)) {
-					log.info("获取手机号异常:" + object.toJSONString());
-					map.put("phoneNumber",phoneNumber);
+				if (object.getString("errcode").equals("0")) {
+					JSONObject jsonObject = object.getJSONObject("phone_info");
+					if (ObjectUtil.isNotEmpty(jsonObject)) {
+						String phoneNumber = jsonObject.getString("phoneNumber");
+						if (ObjectUtils.isEmpty(phoneNumber)) {
+							log.info("获取手机号异常:" + object.toJSONString());
+							throw new RuntimeException("获取手机号异常");
+						} else {
+							map.put("phoneNumber", phoneNumber);
+						}
+					}
+				} else if (object.getString("errcode").equals("-1")) {
+					throw new RuntimeException("系统繁忙,此时请开发者稍候再试");
+				} else {
+					throw new RuntimeException("不合法的telCode(telCode不存在、已过期或者使用过)");
 				}
+
 			}
 		} catch (IOException e) {
 			e.printStackTrace();

+ 4 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java

@@ -324,7 +324,7 @@ public class AppPartsController extends BladeController {
 		BigDecimal month = new BigDecimal("0.00");
 		BigDecimal lastMonth = new BigDecimal("0.00");
 		BigDecimal flowAmount = new BigDecimal("0.00");
-		total = orderList.stream().map(Order::getStorageAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		total = orderList.stream().map(Order::getBalanceAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 		order.setTenantId(AuthUtil.getTenantId());
 		order.setTime("1");
 		month = orderService.selectStorageAmount(order);
@@ -416,7 +416,7 @@ public class AppPartsController extends BladeController {
 	 */
 	@GetMapping("/turnoverAnalysis")
 	@ApiOperation(value = "app营业分析", notes = "传入参数")
-	public R<Map<String, Object>> turnoverAnalysis(@RequestParam("type") String type,
+	public R<Map<String, Object>> turnoverAnalysis(@RequestParam(value = "type", required = false) String type,
 												   @RequestParam(value = "statusDate", required = false) String statusDate,
 												   @RequestParam(value = "endDate", required = false) String endDate) {
 		Map<String, Object> map = new HashMap<>();
@@ -428,9 +428,9 @@ public class AppPartsController extends BladeController {
 		BigDecimal profit = new BigDecimal("0.00");
 		//成本
 		BigDecimal cost = new BigDecimal("0.00");
-		Map<String, BigDecimal> mapXS = orderService.turnoverAnalysis("XS", type, statusDate, endDate);
+		Map<String, BigDecimal> mapXS = orderService.turnoverAnalysis("XS", null, statusDate, endDate);
 
-		Map<String, BigDecimal> mapCG = orderService.turnoverAnalysis("CG", type, statusDate, endDate);
+		Map<String, BigDecimal> mapCG = orderService.turnoverAnalysis("CG", null, statusDate, endDate);
 
 		income = income.add(mapXS.get("income"));
 

+ 2 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -2081,10 +2081,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					stockGoodsClient.updateStock(r.getData());
 				}
 			}
+			selectOrder.setOrderItemsList(orderItemsList);
 		}
 		selectOrder.setConfirmStatus(0);
 		baseMapper.updateById(selectOrder);
 		financeClient.deleteBySrcId(selectOrder.getId());
+		selectOrder.setSettlementList(new ArrayList<>());
 		return R.data(selectOrder);
 	}
 

+ 1 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -284,7 +284,7 @@ public class StockGoodsClient implements IStockGoodsClient {
 			.eq(StringUtils.isNotBlank(stockGoods.getBillNo()), StockGoods::getBillNo, stockGoods.getBillNo())
 			.eq(StringUtils.isNotBlank(stockGoods.getCntrNo()), StockGoods::getCntrNo, stockGoods.getCntrNo())
 			.eq(StockGoods::getIsDeleted, 0)
-			.eq(StockGoods::getTenantId, stockGoods.getTenantId());
+			.eq(StockGoods::getTenantId, AuthUtil.getTenantId());
 		List<StockGoods> goodsList = stockGoodsService.list(stockGoodsLambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(goodsList)) {
 			goodsList.forEach(e -> {

+ 1 - 1
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -606,7 +606,7 @@ public class AccController extends BladeController {
 	public R<List<Acc>> corpAccList(Acc acc) {
 		LambdaQueryWrapper<Acc> accLambdaQueryWrapper = new LambdaQueryWrapper<>();
 
-		if (acc.getFlag() != null && acc.getFlag() == 1) {
+		if ("YPJ".equals(acc.getTradeType())) {
 			accLambdaQueryWrapper.apply(" Amount - Settlement_Amount > 0");
 		}
 		accLambdaQueryWrapper.eq(StringUtils.isNotBlank(acc.getBillType()), Acc::getBillType, acc.getBillType())

+ 26 - 12
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/ItemsController.java

@@ -17,25 +17,27 @@
 package org.springblade.finance.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.finance.vojo.Items;
-import org.springblade.finance.service.IItemsService;
-import org.springblade.finance.vo.ItemsVO;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.finance.service.IItemsService;
+import org.springblade.finance.service.ISettlementService;
+import org.springblade.finance.vo.ItemsVO;
+import org.springblade.finance.vojo.Items;
+import org.springblade.finance.vojo.Settlement;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.boot.ctrl.BladeController;
+
+import javax.validation.Valid;
 
 /**
  * 结算明细 控制器
@@ -51,6 +53,8 @@ public class ItemsController extends BladeController {
 
 	private final IItemsService itemsService;
 
+	private final ISettlementService settlementService;
+
 	/**
 	 * 详情
 	 */
@@ -70,6 +74,16 @@ public class ItemsController extends BladeController {
 	@ApiOperation(value = "分页", notes = "传入items")
 	public R<IPage<Items>> list(Items items, Query query) {
 		IPage<Items> pages = itemsService.page(Condition.getPage(query), Condition.getQueryWrapper(items));
+		if (pages.getRecords().size() > 0) {
+			for (Items item : pages.getRecords()) {
+				Settlement settlement = settlementService.getById(item.getPid());
+				if (ObjectUtils.isNotNull(settlement)){
+					item.setSysNo(settlement.getSysNo());
+					item.setSettlementDate(settlement.getSettlementDate());
+					item.setAccount(settlement.getAccount());
+				}
+			}
+		}
 		return R.data(pages);
 	}
 
@@ -134,9 +148,9 @@ public class ItemsController extends BladeController {
 	public R<IPage<Items>> selectList(Items items, Query query) {
 		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		itemsLambdaQueryWrapper.eq(Items::getTenantId, AuthUtil.getTenantId())
-			.eq(Items::getIsDeleted,0)
-			.eq(ObjectUtils.isNotNull(items.getTradeType()),Items::getTradeType,items.getTradeType())
-			.eq(ObjectUtils.isNotNull(items.getTradeType()),Items::getSrcOrderno,items.getSrcOrderno());
+			.eq(Items::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(items.getTradeType()), Items::getTradeType, items.getTradeType())
+			.eq(ObjectUtils.isNotNull(items.getTradeType()), Items::getSrcOrderno, items.getSrcOrderno());
 		IPage<Items> pages = itemsService.page(Condition.getPage(query), Condition.getQueryWrapper(items));
 		return R.data(pages);
 	}

+ 2 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -2416,6 +2416,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		//如果id=null, 无论主表还是从表, 必然都是新增
 		Long id = dto.getId();
 		if (id == null) {
+			List<String> list = accList.stream().map(Acc::getAccSysNo).distinct().collect(Collectors.toList());
+			model.setSrcOrderno(String.join(",",list));
 			model.setSysNo(dto.getBillType() + System.currentTimeMillis());
 			model.setFoundStatus("结算完成");
 			model.setTenantId(AuthUtil.getTenantId());