Browse Source

Merge branch 'zhongqi-hdAppModify'

shish 10 tháng trước cách đây
mục cha
commit
04d1de6f81

+ 0 - 3
app-ghs/controllers/PublicController.php

@@ -9,9 +9,6 @@ use Yii;
  */
 class PublicController extends baseController{
 
-	public $webTitle		= '管理后台';
-	public $webDescription	= '';
-	public $webKeyword		= '';
 	public $version;//公共静态文件版本号
 
 	public function beforeAction($action){

+ 5 - 0
app-ghs/controllers/ShopAdminController.php

@@ -15,6 +15,11 @@ use common\components\stringUtil;
 use common\components\util;
 use Yii;
 
+/**
+ * 员工控制器(表 xhStaff )
+ * Class ShopAdminController
+ * @package ghs\controllers
+ */
 class ShopAdminController extends BaseController
 {
 

+ 14 - 8
app-hd/controllers/ChatController.php

@@ -178,24 +178,30 @@ class ChatController extends BaseController
     {
         $post = Yii::$app->request->post();
         $key = $post['key'];
-        $price = floatval($post['price']);
+        $price = round(floatval($post['price']), 2);
         $keyArr = explode('-', $key);
+        if (count($keyArr) != 3) {
+            util::error(-1, '校验失败,key格式错误');
+        }
         $shopId = intval($keyArr[0]);
         if ($this->shopId != $shopId) {
-            util::error(-1, '校验失败,并不是你的客户');
+            util::error(-1, '校验失败,不是你的客户');
         }
 
-        $goodsId = $keyArr[2];
-        $goods = GoodsClass::getById($goodsId, false, 'id, priceType');
-        if ($goods['priceType'] != 0) {
-            util::error(-1, '此商品无需走报价');
+        $goodsId = intval($keyArr[2]);
+        $goods = GoodsClass::getById($goodsId, false, 'id, mainId, priceType');
+        // if ($goods['priceType'] != 0) {
+        //     util::error(-1, '此商品无需走报价');
+        // }
+        if ($goods['mainId'] != $this->mainId) {
+            util::error(-1, '校验失败,不是你的商品');
         }
-        $userId = $keyArr[1] ?? 0;
+        $userId = intval($keyArr[1]);
 
         //$currentKey = 'report_price:' . $shopId . '_' . $userId . '_' . $goodsId; // 无价格报价,多处相关,请搜索关键词 shopId_userId_goodsId
         $currentKey = ChatClass::getQuotedPriceKey($shopId, $userId, $goodsId);
         $val = Yii::$app->redis->executeCommand('GET', [$currentKey]);
-        if (!empty($saveAuthCode)) { // 修改报价
+        if (!empty($val)) { // 修改报价
             Yii::info('修改报价:' . $currentKey . ' -- 旧价:' . $val . ', 新价:' . $price);
         }
 

+ 49 - 8
app-hd/controllers/RechargeController.php

@@ -11,7 +11,6 @@ use bizGhs\custom\classes\CustomClass;
 use bizHd\custom\classes\HdClass;
 use bizHd\member\classes\MemberWealClass;
 use bizHd\order\classes\OrderClass;
-use bizHd\order\classes\SettleClass;
 use bizHd\wx\classes\WxOpenClass;
 use bizMall\wx\classes\WxMiniClass;
 use common\components\dict;
@@ -53,13 +52,11 @@ class RechargeController extends BaseController
         util::success(['rechargeAccountLink' => $link, 'orderLink' => $orderLink]);
     }
 
-    //获取扫码充值的小程序码 ssh 20250307
+    //获取扫码充值的小程序码
     public function actionGetRechargeCode()
     {
-
         $shopId = $this->shopId;
-        $recharge = MemberWealClass::getAllByCondition(['shopId' => $shopId], 'recharge asc', '*', null, true);
-        //这里取前面三个放在海报里,对应表名是 xhMemberRecharge 不是 MemberWeal
+        $recharge = MemberWealClass::getAllByCondition(['shopId' => $shopId], 'recharge asc', '*', null); //这里取前面三个放在海报里,对应表名是 xhMemberRecharge 不是 MemberWeal
 
         $merchant = WxOpenClass::getMallWxInfo();
         $page = 'pages/member/recharge';
@@ -68,15 +65,59 @@ class RechargeController extends BaseController
         $imgUrl = miniUtil::generateUnlimitedRechargeMiniCode($merchant, $page, $scene, $ptStyle);
 
         $prefix = imgUtil::getPrefix();
-        $titleBase64 = stringUtil::ossBase64('扫码充值');
 
-        $memberUrl = $prefix . 'shop/miniCodeBg.jpg?x-oss-process=image';
+        $titleBase64 = stringUtil::ossBase64('扫码充值');
         $memberMiniCodeBase64 = stringUtil::ossBase64($imgUrl);
+        $memberUrl = $prefix . 'shop/miniCodeBg.jpg?x-oss-process=image';
         $memberUrl .= '/watermark,image_' . $memberMiniCodeBase64 . ',g_north,x_0,y_40';
         $memberUrl .= '/watermark,text_' . $titleBase64 . ',g_north,x_0,y_530,size_50';
 
-        $respond = ['imgUrl' => $memberUrl];
+        $posterUrl = $prefix . 'poster/recharge_poster.jpg';
+        // 组合充值海报:将前3条充值活动写入海报对应位置
+        // 海报尺寸:955x1439;以下坐标为在设计稿上测得的三行“进店充值/获得”数值区大致位置
+        // 位置从上到下三行,左列为“进店充值”,中列为“获得”
+        $posterProcess = '?x-oss-process=image';
+		// 将小程序码放到右下角白色区域,大小与白色区域一致(可按需微调)
+		$qrWidth = 230; // 白色区域宽度,像素
+		$qrRightPadding = 144; // 距离右边的留白
+		$qrBottomPadding = 72; // 距离底部的留白
+		// 先用 $imgUrl 生成按宽度缩放后的小程序码图片,再拼接到海报
+		$miniCodeResizeUrl = $imgUrl . (strpos($imgUrl, '?') === false ? '?x-oss-process=image' : '&x-oss-process=image');
+		$miniCodeResizeUrl .= '/resize,w_' . $qrWidth;
+		$miniCodeResizeBase64 = stringUtil::ossBase64($miniCodeResizeUrl);
+		$posterProcess .= '/watermark,image_' . $miniCodeResizeBase64 . ',g_se,x_' . $qrRightPadding . ',y_' . $qrBottomPadding;
+        $positions = [
+            ['recharge' => ['x' => 240, 'y' => 665], 'give' => ['x' => 520, 'y' => 665]],
+            ['recharge' => ['x' => 220, 'y' => 845], 'give' => ['x' => 500, 'y' => 845]],
+            ['recharge' => ['x' => 220, 'y' => 1030], 'give' => ['x' => 500, 'y' => 1030]],
+        ];
+        $fontSize = 44; // 数值字号
+        $fontColor = '333333';
+		if (!empty($recharge)) {
+			// 先生成同一张图片上的文字水印串,最后再与$posterProcess合并
+			$textProcess = '';
+            $topThree = array_slice($recharge, 0, 3);
+            foreach ($topThree as $index => $val) {
+                $pos = $positions[$index] ?? null;
+                if ($pos === null) {
+                    continue;
+                }
+                $rechargeText = (string)(intval($val['recharge']) ?? '');
+                $giveText = (string)(intval($val['give']) ?? '');
+                if ($rechargeText !== '') {
+                    $rechargeBase64 = stringUtil::ossBase64($rechargeText);
+					$textProcess .= '/watermark,text_' . $rechargeBase64 . ',g_nw,x_' . $pos['recharge']['x'] . ',y_' . $pos['recharge']['y'] . ',size_' . $fontSize . ',color_' . $fontColor;
+                }
+                if ($giveText !== '') {
+                    $giveBase64 = stringUtil::ossBase64($giveText);
+					$textProcess .= '/watermark,text_' . $giveBase64 . ',g_nw,x_' . $pos['give']['x'] . ',y_' . $pos['give']['y'] . ',size_' . $fontSize . ',color_' . $fontColor;
+                }
+            }
+			$posterProcess .= $textProcess;
+        }
+        $posterUrl .= $posterProcess;
 
+        $respond = ['imgUrl' => $memberUrl, 'posterUrl' => $posterUrl];
         util::success($respond);
     }
 

+ 25 - 3
app-hd/controllers/ShopController.php

@@ -120,8 +120,8 @@ class ShopController extends BaseController
         //同步更新同城配送微信门店
         // 校验有无经纬度数据,没有不更新(说明地图定位功能不可用了)
         if ($data['lat'] != '' && $data['long'] != '') {
-            $shopExt = MainClass::getById($this->mainId, false, false, 'id, wxStoreId');
-            if ($shopExt['wxStoreId'] == '') {
+            $main = MainClass::getById($this->mainId, false, false, 'id, wxStoreId');
+            if ($main['wxStoreId'] == '') {
                 Yii::error(__CLASS__ . __METHOD__ . ' - 未创建门店,请先创建');
                 util::complete();
             }
@@ -131,7 +131,7 @@ class ShopController extends BaseController
             $storeName = $shopName == '首店' ? $sjName : $sjName . ' ' . $shopName;
 
             $storeData = [
-                'keys' => ['wx_store_id' => $shopExt['wxStoreId']],
+                'keys' => ['wx_store_id' => $main['wxStoreId']],
                 'content' => [
                     'store_name' => $storeName,
                     'address_info' => [
@@ -480,4 +480,26 @@ class ShopController extends BaseController
         $shop->save();
         util::complete('修改成功');
     }
+
+    public function actionUpdateShopAvatar()
+    {
+        $data = Yii::$app->request->post();
+        $id = isset($data['id']) ? $data['id'] : 0;
+        $shop = ShopClass::getById($id, true, 'id, sjId, avatar');
+        ShopService::valid($shop, $this->sjId);
+        if(isset($data['avatar']) && $data['avatar']!='') {
+            $shop->avatar = $data['avatar'];
+            $re = $shop->save();
+
+            if ($re) {
+                \bizGhs\custom\classes\CustomClass::updateByCondition(['shopId'=>$id], [
+                    'avatar'=>$data['avatar']
+                ]);
+                util::complete('头像修改完成');
+            }
+
+            util::fail('头像修改失败');
+        }
+        util::fail('头像参数出错');
+    }
 }

+ 17 - 0
app-mall/controllers/OrderController.php

@@ -392,6 +392,23 @@ class OrderController extends BaseController
     public function actionCreateOrder()
     {
         $post = Yii::$app->request->post();
+
+        // 判断是否在营业时间窗口
+        $openTime = $this->shop->openStartTime; // 示例:09:10
+        $closeTime = $this->shop->openEndTime; // 示例:18:30
+        if ($openTime != '' && $closeTime != '') {
+            $openHourMinute = explode(':', $openTime);
+            $closeHourMinute = explode(':', $closeTime);
+            $currentHour = date('H');
+            $currentMinute = date('i');
+            if ($currentHour < intval($openHourMinute[0]) || ($currentHour == intval($openHourMinute[0]) && $currentMinute < intval($openHourMinute[1]))) {
+                util::fail('不在营业时间窗口');
+            }
+            if ($currentHour > intval($closeHourMinute[0]) || ($currentHour == intval($closeHourMinute[0]) && $currentMinute > intval($closeHourMinute[1]))) {
+                util::fail('不在营业时间窗口');
+            }
+        }
+
         $goodsId = $post['goodsId'] ?? 0;
         $goodsNum = isset($post['goodsNum']) && $post['goodsNum'] > 0 ? $post['goodsNum'] : 1;
         $sendType = $post['sendType'] ?? dict::getDict('sendType', 'thirdSend');

+ 5 - 5
biz-ghs/custom/classes/CustomClass.php

@@ -367,13 +367,13 @@ class CustomClass extends BaseClass
         foreach ($list as $key => $val) {
             $customSjId = $val['sjId'];
             $currentInfo = isset($sjInfo[$customSjId]) ? $sjInfo[$customSjId] : [];
-            $currentInfo = business::formatMerchantLogo($currentInfo);
-            $smallAvatar = !empty($currentInfo['smallLogoUrl']) ? $currentInfo['smallLogoUrl'] : imgUtil::getPrefix() . '/hhb_small.png';
-            $avatar = !empty($currentInfo['logoUrl']) ? $currentInfo['logoUrl'] : imgUtil::getPrefix() . '/hhb_small.png';
+            //$currentInfo = business::formatMerchantLogo($currentInfo);
+            $smallAvatar =  imgUtil::getPrefix() . (!empty($val['avatar']) ? $val['avatar'] : '/hhb_small.png') . '?x-oss-process=image/resize,m_fill,h_130,w_130';
+            $avatar = imgUtil::getPrefix() . (!empty($val['avatar']) ? $val['avatar'] : '/hhb_small.png');
             $list[$key]['smallAvatar'] = $smallAvatar;
-            $list[$key]['shortSmallAvatar'] = $currentInfo['shortSmallLogoUrl'];
+            //$list[$key]['shortSmallAvatar'] = $currentInfo['shortSmallLogoUrl'];
             $list[$key]['avatar'] = $avatar;
-            $list[$key]['shortAvatar'] = $currentInfo['shortLogoUrl'];
+            //$list[$key]['shortAvatar'] = $currentInfo['shortLogoUrl'];
             $list[$key]['sn'] = $val['id'];
             $level = $val['level'] ?? 1;
             $levelName = $levelMap[$level] ?? '';

+ 0 - 1
biz-hd/message/services/ChatService.php

@@ -5,7 +5,6 @@ namespace bizHd\message\services;
 use bizHd\base\services\BaseService;
 use bizHd\custom\classes\CustomClass;
 use bizHd\message\classes\ChatClass;
-use bizHd\user\classes\UserClass;
 use bizHd\user\services\UserService;
 use common\components\arrayUtil;
 use common\components\imgUtil;